python爬虫学习(数据解析)

本文介绍了Python爬虫中数据解析的重要性和流程,包括聚焦爬虫的概念。详细讲解了使用正则表达式、BeautifulSoup(bs4)和XPath进行数据解析的方法,提供了各个方法的实现原理、环境安装步骤及实例应用。
摘要由CSDN通过智能技术生成

引入

我们首先回顾一下之前学习的requsets模块实现数据爬取的流程:

  • 指定url
  • 发起请求
  • 获取响应数据
  • 持久化存储

其实,在上述的流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析。因此大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据。因此,本次可能将详细介绍三种聚焦爬虫中的数据解析方式。至此我们的数据爬取的流程可以修改为:

  • 指定url
  • 发起请求
  • 获取响应数据
  • 数据解析
  • 持久化存储

聚焦爬虫

我们之前介绍的是通用爬虫,它用于爬取整张页面信息
聚焦爬虫:聚焦爬虫是建立在通用爬虫的基础之上的,再将我们所需要的数据进行提取(数据解析),从而实现爬取页面中指定的页面内容;

数据解析的分类

  • 基于正则实现的数据解析
  • 通过bs4实现的数据解析
  • 使用xpath实现数据解析(最通用的)

数据解析原理概述

  • 解析的局部的文本内容都会在标签之间或者对应的属性中进行储存
  • 1 .进行指定标签的定位
  • 2.标签或者对应的属性中储存的数据值进行提取(解析)

使用正则表达式进行数据解析

在实现这个我们需求时,先解决一个问题,就是怎样爬取一种图片:

import requests
if __name__ == "__main__":
    headers = {
   'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 Safari/605.1.15'}

    url = 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3187129139,3162464776&fm=26&gp=0.jpg'
    # 使用content返回的是二进制形式的图片数据
    img_data = requests.get(url=url).content

    with open('./qiutu.jpg', 'wb') as fp:
        fp.write(img_data)
  • 需求:爬取糗事百科中糗图板块下所有的糗图图片
import requests
import re
import os
if __name__ == '__main__':
	# 创建一个文件夹用于保存所有的图片
	if not os.path.exists('./qiutulibs'):
		os.mkdir('./qiutulibs')
	url = 'http://www.qiushibaike.com/pic/'
	headers = {
   'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 Safari/605.1.15'}
	# 使用通用爬虫对url对应的一整张页面进行爬取
	page_text = requests.get(url=url, headers=headers).text
	# 使用聚焦爬虫将页面中所有的糗图进行解析/提取
	# 根据网页文本的格式编写正则表达式,提取出图片的url地址
	ex = '<div class="thumb">.*?</div>'
	# 获得所有图片url的列表
	img_src_list = re.findall(ex, page_text, re.S)
	for src in img_src_list:
		src = 'https' + src  # 拼接一个完整的图片地址
		img_data = requests.get(url=src, headers=headers).content
		# 生成图片名称
		img_name = src.split('/')[-1]
		imgPath = 'qiutulips/' + img_name
		with open(imgPath, 'wb') as fp:
			fp.write(img_data)

使用bs4进行数据解析

实现原理

  • 实例化一个BeautifuiSoup对象,并且将页面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值