Python爬虫获取数据保存到数据库中(超级详细,保证一看就会)

本文介绍了网络爬虫的基本概念,以Python作为爬虫语言,详细讲解了XPath如何用于网页信息的选取。通过实例展示了如何使用XPath获取优快云博客列表的文章标题、摘要、路径和发布时间,并将数据存储到数据库中。同时,提供了F12开发者工具中获取XPath路径的方法,以及爬虫代码实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.简介介绍

-网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
-一般在浏览器上可以获取到的,通过爬虫也可以获取到,常见的爬虫语言有PHP,JAVA,C#,C++,Python,为啥我们经常听到说的都是Python爬虫,这是因为python爬虫比较简单,功能比较齐全。

2.Xpath获取页面信息

通过Xpath进行爬虫就是获取到页面html后通过路径的表达式来选取标签节点,沿着路径选取需要爬取的数据。

Xpath常用表达式:

表达式描述
/从根节点选取(取子节点)
//选择的当前节点选择文档中的节点
.选取当前节点。
选取当前节点的父节点。
@选取属性
*表示任意内容(通配符)
|运算符可以选取多个路径

Xpath常用函数:

函数用法解释
startswith()xpath(‘//div[starts-with(@id,”celent”)]‘)#选取id值以celent开头的div节点
contains()xpath(‘//div[contains(@id,”celent”)]‘)#选取id值包含celent的div节点
and()xpath(‘//div[contains(@id,”celent”) and contains(@id,”in”)]‘)#选取id值包含celent的div节点
text()_.xpath(’./div/div[4]/a/em/text()’)#选取em标签下文本内容

Xpath实操解析:

# 案例1
# //为从当前html中选取节点;[@class="c1text1"]为获取所有的class为c1text1的节点;/h1[1]为选取的节点下的第一个h1节点,如果没有[1]则是获取所有的,可以通过循环进行获取数据
etreeHtml.xpath('//*[@class="c1text1"]/h1[1]/text()')

# 案例2
#//为从当前html中选取节点;[@class="c1text1"]为获取所有的class为c1text1的节点;/a为获取当前节点下的所有a标签节点,得到一个ObjectList;通过for循环获取里面每个标签数据,./@src为获取当前节点的src属性值
etreeHtml2 = etreeHtml.xpath('//*[@class="c1text1"]/a')
for _ in etreeHtml2: 
	etreeHtml.xpath(./@src)

3.通过Xpath爬虫实操

本次实例以爬取我的优快云文章列表信息保存到数据库为案列

3-1.获取xpath

通过F12打开开发者模式,点击左上角图标可参考下图,选择需要爬取数据的容器,在右边选择复制选择xpath就可以得到xpath路径了(//*[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div);
在这里插入图片描述
完整代码展示:

# 导入需要的库
import requests
from lxml import etree
import pymysql


# 文章详情信息类
class articleData():
    def __init__(self, title, abstract, path,date):
        self.title = title #文章名称
        self.abstract = abstract #文章摘要
        self.path = path #文章路径
        self.date = date #发布时间


    def to_string(self):
        print("文章名称:"+self.title
              +";文章摘要:"+self.abstract
              +";文章路径:"+self.path
              +";发布时间:"+self.date)

#保存狗狗详情数据
#保存数据
def saveData(DataObject):
    count = pymysql.connect(
        host='xx.xx.xx.xx',  # 数据库地址
        port=3306,  # 数据库端口
        user='xxxxx',  # 数据库账号
        password='xxxxxx',  # 数据库密码
        db='xxxxxxx'  # 数据库名
    )
    # 创建数据库对象
    db = count.cursor()
    # 写入sql
    # print("写入数据:"+DataObject.to_string())
    sql = f"insert into article_detail(title,abstract,alias,path,date) " \
          f"values ('{DataObject.title}','{DataObject.abstract}','{DataObject.path}','{DataObject.date}')"
    # 执行sql
    print(sql)
    db.execute(sql)
    # 保存修改内容
    count.commit()
    db.close()

# 爬取数据的方向
def getWebData():
    # 网站页面路径
    url = "https://blog.youkuaiyun.com/BadBoyxiaolin?spm=1000.2115.3001.5343"
    # 请求头,模拟浏览器请求
    header = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
    }
    # 获取页面所有节点代码
    html = requests.get(url=url, headers=header)
    # 打印页面代码查看
    # print(html.text)
    # 如果乱码可以设置编码格式
    # html.encoding = 'gb2312'
    # 通过xpath获取数据对应节点
    etreeHtml = etree.HTML(html.text)
    dataHtml = etreeHtml.xpath('//*[@class="mainContent"]/div/div/div')
    # 循环获取数据
    for _ in dataHtml:
        # ''.join()是将内容转换为字符串可以后面接replace数据进行处理
        title = ''.join(_.xpath('./article/a/div[1]/h4/text()'))#文章标题
        abstract = ''.join(_.xpath('./article/a/div[2]/text()'))#文章摘要
        path = ''.join(_.xpath('./article/a/@href'))#文章路径
        date = ''.join(_.xpath('./article/a/div[3]/div/div[2]/text()')).replace(' ','').replace('·','').replace('发布博客','')#发布时间
        #初始化文章类数据
        article_data = articleData(title,abstract,path,date)
        article_data.to_string() #打印数据看看是否对
        #保存数据到数据库
        # saveData(article_data)

if __name__ == "__main__":
    getWebData()
<think>好的,我现在需要处理用户关于安装麒麟信安3.3操作系统的查询。首先,我需要回顾用户提供的系统级指令,确保回答符合格式要求,比如数学表达式使用$...$,独立公式用$$...$$,中文回答,生成相关问题等。不过当前问题涉及操作系统安装,可能不涉及数学公式,但还是要检查是否有需要的地方,比如版本号或硬件参数可能需要强调。 接下来,用户的问题具体是寻找麒麟信安3.3的安装教程。根据用户提供的引用内容,引用[1]是关于麒麟信安4.0及以上安装Docker的步骤,而引用[2]是银河麒麟虚拟机安装的指南。用户需要的是3.3版本的安装教程,但现有引用中没有直接提到3.3版本的信息。这可能需要推断或基于现有信息提供相近的指导。 首先,我需要确认麒麟信安3.3和4.0的安装步骤是否相似。通常,同操作系统不同版本的安装流程可能大同小异,可能在硬件要求、软件包版本或某些配置步骤上有差异。因此,可以建议用户参考4.0的安装步骤,同时注意版本差异。 根据引用[2],银河麒麟的安装涉及创建虚拟机、选择ISO镜像、配置硬件、安装设置等步骤。虽然这是针对银河麒麟的,但麒麟信安可能也有类似的安装流程,尤其是在虚拟机环境中。因此,可以引导用户按照类似的步骤操作,但提醒注意版本特定的要求。 接下来,我需要整理回答的结构,确保符合用户要求的清晰结构,分步骤说明。可能需要包括准备工作、安装步骤、注意事项等部分。同时,要引用提供的资料,比如引用[1]中的硬件要求和更新系统软件包的步骤,引用[2]中的虚拟机安装流程,但需要明确指出这些是不同版本或不同系统的步骤,可能存在差异。 此外,用户可能需要安装指南的具体步骤,比如如何获取ISO镜像、启动安装程序、分区设置、网络配置等。但现有引用中没有麒麟信安3.3的具体细节,因此需要建议用户查阅官方文档或联系支持,同时提供基于现有信息的通用步骤。 还需要注意用户提到的麒麟信安3.3是否与引用中的麒麟信安4.0或银河麒麟有兼容性或步骤上的不同。可能需要指出这些潜在差异,避免用户操作错误。 最后,生成相关问题时要围绕安装指南、系统要求、常见问题等,确保问题相关且有帮助。 总结步骤: 1. 确认用户需求:麒麟信安3.3安装教程。 2. 分析现有引用,发现没有直接对应的信息,但找到类似系统的安装步骤。 3. 基于现有引用和通用安装知识,提供可能的步骤,并指出版本差异。 4. 提醒用户参考官方文档或寻求官方支持。 5. 生成相关问题,如系统要求、虚拟机安装、升级到新版本等。</think>根据现有资料及相近版本安装经验,麒麟信安3.3操作系统的安装可参考以下通用步骤: ### 、系统安装准备 1. **硬件要求**(参考4.0版本调整): - CPU架构:$x86\_64$ - 内存:建议≥2GB - 硬盘空间:≥20GB(需考虑应用需求)[^1] 2. **获取安装介质**: - 联系麒麟信安官方获取3.3版本ISO镜像 - 校验文件哈希值确保完整性 ### 二、安装流程(虚拟机环境参考[^2]) ```markdown 1. 创建虚拟机: - 使用VMware/VirtualBox选择"典型"配置 - 加载麒麟信安3.3 ISO镜像 - 分配资源(建议2核CPU/4GB内存/40GB磁盘) 2. 启动安装程序: - 选择"安装麒麟信安操作系统" - 设置语言、时区与键盘布局 3. 磁盘分区: - 自动分区(推荐新手) - 手动分区需保留/boot(≥1GB)、swap(≈内存2倍)、/(≥15GB) 4. 用户配置: - 设置root密码(需满足复杂度要求) - 创建普通用户(建议启用sudo权限) ``` ### 三、注意事项 1. **驱动兼容性**:3.3版本可能需手动加载部分硬件驱动 2. **软件源配置**:安装后执行`sudo apt update`更新源(若源未自动识别) 3. **安全加固**:建议安装后配置防火墙规则(如$iptables$或$firewalld$)
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hippoDocker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值