python层级抓取_070.Python聚焦爬虫数据解析

本文详细介绍了Python聚焦爬虫的数据解析,包括正则表达式、BeautifulSoup和XPath的使用方法,并提供了爬取图片、网页内容等实例。内容涵盖基本的网页数据提取、标签定位、文本和属性值获取,以及实际案例的爬取和存储操作。
摘要由CSDN通过智能技术生成

一 聚焦爬虫数据解析

1.1 基本介绍

聚焦爬虫的编码流程

指定url

基于requests模块发起请求

获取响应对象中的数据

数据解析

进行持久化存储

如何实现数据解析

三种数据解析方式

正则表达式

bs4

xpath

数据解析的原理

- 进行标签定位

- 获取定位好的标签里面的文本数据和属性值

1.2  爬取一个网站的图片

importrequests#1. 指定url

url = "http://mpic.spriteapp.cn/ugc/2019/09/01/5d6be8e4396c4.gif"headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36"}#2. 基于requests模块发起请求#3. 获取响应对象中的数据

page_content = requests.get(url=url, headers=headers).content#4. 进行持久化存储

with open('./火狐突击.gif', 'wb') as f:

f.write(page_content)

执行

就有图片文件保存

上面的功能可以使用urlib实现

#引入urllib的request的模块

from urllib importrequest#指定url

url = "http://mpic.spriteapp.cn/ugc/2019/09/01/5d6be8e4396c4.gif"

#需要两个参数,一个是url.另一个是保存的文件名

request.urlretrieve(url=url,filename="./火狐突击_urllib.gif")

执行后出现

('./火狐突击_urllib.gif', )

查看目录

使用urllib模块下载图片,代码量比较少

有一个缺点,如果有些网站有UA检测机制的话,此方法就不适用

1.3  聚焦爬虫

爬取不得姐的所有图片

其中一张图片信息如下

提取上面内容,使用正则匹配出元数据部分

html ="""

我抱得动你吗?

"""

#ex = '

.*?
'#匹配的内容:

"""

我抱得动你吗?

"""

#ex = '

.*?data-original="" title=".*?
'#匹配的内容:

"""第一个.*?

第二个.*? 抱得动你吗?" alt="我抱得动你吗?">

"""

importre

# re.S表示单行匹配,可以将字符串中的多行拼接起来,进行统一匹配,如果不加,则会一行一行地进行匹配,最后得到的结果是[]

ex= '

.*?data-original="(.*?)" title=".*?
'#获取的是一个列表后加上[0]就可以得到值

image_url=re.findall(ex,html,re.S)print(image_url[0])

执行

http://mpic.spriteapp.cn/ugc/2020/04/04/5e887902d0f98.gif

完整代码

获取所有图片代码如下

#爬取不得姐网站上面的所有图片

importosimportreimportrequestsfrom urllib importrequest#1. 指定url

url = "http://www.budejie.com/pic/"headers={"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"}

ex= '

.*?data-original="(.*?)" title=".*?
'

#判断是否有images文件存在,如果不存在,就创建一个新的,用来存储图片,使用OS模块

if not os.path.exists('./images'):

os.mkdir('./images')#2. 基于requests模块发起请求#3. 获取响应对象中的数据

page_text = requests.get(url=url, headers=headers).text#4. 数据解析

img_url_list =re.findall(ex, page_text, re.S)#5. 进行持久化存储

for img_url inimg_url_list:#获取到图片的url之后,可以对这个如来进行切割,得到图片的名称,并进行存储,同时由于还有一层目录,就可以吧images拼接到字符串中

img_name = './images/' + img_url.split('/')[-1]#获取到图片的url之后,接下来进行图片的存储

request.urlretrieve(url=img_url, filename=img_name)

执行,就可以得到images目录,同时存有下载的图片

二 bs4数据解析

2.1 基本使用

环境安装:

它是一个解析器,如果使用bs4进行数据解析,需要依靠lxml

root@darren-virtual-machine:~# pip3 install bs4

root@darren-virtual-machine:~# pip3 install lxml

导入bs4模块

from bs4 import BeautifulSoup

BeautifulSoup解析原理:

实例化一个BeautifulSoup对象,并将需要解析的页面源码数据加载到对象中

使用该对象的相关属性和方法进行数据解析或提取

如何实例化一个BeautifulSoup对象

本地加载

f = open()

soup = BeautifulSoup(f, "lxml")

网络加载

soup = BeautifulSoup(page_text, "lxml")

创建一个本地的测试html文件

root@darren-virtual-machine:~# cd /root/Python爬虫/

root@darren-virtual-machine:~/Python爬虫# vim test_page.html

测试bs4

百里守约

李清照

王安石

苏轼

柳宗元

this is span宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱

总为浮云能蔽日,长安不见使人愁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值