Python网络爬虫的三种数据解析方式

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

一.正解解析

常用正则表达式回顾:

单字符:

        . : 除换行以外所有字符

        [] :[aoe] [a-w] 匹配集合中任意一个字符

        \d :数字  [0-9]

        \D : 非数字

        \w :数字、字母、下划线、中文

        \W : 非\w

        \s :所有的空白字符包,括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

        \S : 非空白

    数量修饰:

        * : 任意多次  >=0

        + : 至少1次  >=1

        ? : 可有可无  0次或者1次

        {m} :固定m次 hello{3,}

        {m,} :至少m次

        {m,n} :m-n次

    边界:

        $ : 以某某结尾

        ^ : 以某某开头

    分组:

        (ab) 

    贪婪模式: .*

    非贪婪(惰性)模式: .*?

    re.I : 忽略大小写

    re.M :多行匹配

    re.S :单行匹配

    re.sub(正则表达式, 替换内容, 字符串)

回顾练习:

项目需求:爬取糗事百科指定页面的糗图,并将其保存到指定文件夹中

二.Xpath解析

测试页面数据

常用xpath表达式回顾

属性定位:

    #找到class属性值为song的div标签

    //div[@class="song"]

层级&索引定位:

    #找到class属性值为tang的div的直系子标签ul下的第二个子标签li下的直系子标签a

    //div[@class="tang"]/ul/li[2]/a

逻辑运算:

    #找到href属性值为空且class属性值为du的a标签

    //a[@href="" and @class="du"]

模糊匹配:

    //div[contains(@class, "ng")]

    //div[starts-with(@class, "ta")]

取文本:

    # /表示获取某个标签下的文本内容

    # //表示获取某个标签下的文本内容和所有子标签下的文本内容

    //div[@class="song"]/p[1]/text()

    //div[@class="tang"]//text()

取属性:

    //div[@class="tang"]//li[2]/a/@href

代码中使用xpath表达式进行数据解析:

1.下载:pip install lxml

2.导包:from lxml import etree

3.将html文档或者xml文档转换成一个etree对象,然后调用对象中的方法查找指定的节点

  2.1 本地文件:tree = etree.parse(文件名)

                tree.xpath("xpath表达式")

  2.2 网络数据:tree = etree.HTML(网页内容字符串)

                tree.xpath("xpath表达式")

安装xpath插件在浏览器中对xpath表达式进行验证:可以在插件中直接执行xpath表达式

将xpath插件拖动到谷歌浏览器拓展程序(更多工具)中,安装成功

启动和关闭插件 ctrl + shift + x

项目需求:获取好段子中段子的内容和作者   http://www.haoduanzi.com

下载煎蛋网中的图片数据:http://jandan.net/ooxx

三.BeautifulSoup解析

环境安装

- 需要将pip源设置为国内源,阿里源、豆瓣源、网易源等

  - windows

    (1)打开文件资源管理器(文件夹地址栏中)

    (2)地址栏上面输入 %appdata%

    (3)在这里面新建一个文件夹  pip

    (4)在pip文件夹里面新建一个文件叫做  pip.ini ,内容写如下即可

        [global]

        timeout = 6000

        index-url = https://mirrors.aliyun.com/pypi/simple/

        trusted-host = mirrors.aliyun.com

  - linux

    (1)cd ~

    (2)mkdir ~/.pip

    (3)vi ~/.pip/pip.conf

    (4)编辑内容,和windows一模一样

- 需要安装:pip install bs4

    bs4在使用时候需要一个第三方库,把这个库也安装一下

    pip install lxml

基础使用

使用流程:

    - 导包:from bs4 import BeautifulSoup

    - 使用方式:可以将一个html文档,转化为BeautifulSoup对象,然后通过对象的方法或者属性去查找指定的节点内容

        (1)转化本地文件:

            - soup = BeautifulSoup(open('本地文件'), 'lxml')

        (2)转化网络文件:

            - soup = BeautifulSoup('字符串类型或者字节类型', 'lxml')

        (3)打印soup对象显示内容为html文件中的内容

基础巩固:

    (1)根据标签名查找

        - soup.a  只能找到第一个符合要求的标签

    (2)获取属性

        - soup.a.attrs  获取a所有的属性和属性值,返回一个字典

        - soup.a.attrs['href']  获取href属性

        - soup.a['href']  也可简写为这种形式

    (3)获取内容

        - soup.a.string

        - soup.a.text

        - soup.a.get_text()

      【注意】如果标签还有标签,那么string获取到的结果为None,而其它两个,可以获取文本内容

    (4)find:找到第一个符合要求的标签

        - soup.find('a')  找到第一个符合要求的

        - soup.find('a', title="xxx")

        - soup.find('a', alt="xxx")

        - soup.find('a', class_="xxx")

        - soup.find('a', id="xxx")

    (5)find_all:找到所有符合要求的标签

        - soup.find_all('a')

        - soup.find_all(['a','b']) 找到所有的a和b标签

        - soup.find_all('a', limit=2)  限制前两个

    (6)根据选择器选择指定的内容

              select:soup.select('#feng')

        - 常见的选择器:标签选择器(a)、类选择器(.)、id选择器(#)、层级选择器

            - 层级选择器:

                div .dudu #lala .meme .xixi  下面好多级

                div > p > a > .lala          只能是下面一级

        【注意】select选择器返回永远是列表,需要通过下标提取指定的对象

需求:使用bs4实现将诗词名句网站中三国演义小说的每一章的内容爬去到本地磁盘进行存储   http://www.shicimingju.com/book/sanguoyanyi.html

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
网络爬虫是指通过程序自动化地从互联网上抓取数据的一种技术。Python是一种非常适合开发网络爬虫的编程语言,因为它具有简洁的语法、强大的第三方库和丰富的网络爬虫工具。 下面是一个简单的Python网络爬虫实现步骤: 1. 导入必要的库 ``` import requests from bs4 import BeautifulSoup ``` 2. 发送HTTP请求并获取HTML页面 ``` url = 'https://www.example.com' response = requests.get(url) html = response.text ``` 3. 解析HTML页面并获取所需数据 ``` soup = BeautifulSoup(html, 'html.parser') data = soup.find('div', {'class': 'data'}) ``` 4. 保存数据到本地或数据库 ``` with open('data.txt', 'w', encoding='utf-8') as f: f.write(data.text) ``` 数据可视化是指通过图表、图形等形式将数据以更加直观化的方式呈现出来,以便更好地理解和分析数据Python也有很多优秀的数据可视化库,比如: - Matplotlib:最流行的Python绘图库,支持多种图表类型。 - Seaborn:基于Matplotlib的高级数据可视化库,提供更加美观和专业的绘图。 - Plotly:交互式的数据可视化库,支持实时数据更新和动画效果。 下面是一个简单的数据可视化实现步骤: 1. 导入必要的库 ``` import pandas as pd import matplotlib.pyplot as plt ``` 2. 读取数据文件并进行数据清洗和整理 ``` data = pd.read_csv('data.csv') clean_data = data.dropna() ``` 3. 绘制图表 ``` plt.plot(clean_data['x'], clean_data['y']) plt.xlabel('x') plt.ylabel('y') plt.title('Data Visualization') plt.show() ``` 以上就是Python网络爬虫数据可视化的简单实现步骤,具体实现还需要根据具体需求进行调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值