float有效位数Python爬⾍实战(三种数据解析⽅式及对⽐总结)
1. 正则解析
引⾔:回顾requests实现数据爬取的流程
1.指定url
2.基于requests模块发起请求
3.获取响应对象中的数据
4.进⾏持久化存储
其实,在上述流程中还需要较为重要的⼀步,就是在持久化存储之前需要进⾏指定数据解析。因为⼤多数情况下的需求,我们都会指定去使⽤聚焦爬⾍,也就是爬取页⾯中指定部分的数据值,⽽不是整个页⾯的数据。因此,本次课程中会给⼤家详细介绍讲解三种聚焦爬⾍中的数据解析⽅式。⾄此,我们的数据爬取的流程可以修改为:
java随机数生成不重复1.指定url
2.基于requests模块发起请求
3.获取响应中的数据
4.数据解析
5.进⾏持久化存储
常⽤正则表达式回顾:
单字符:
. : 除换⾏以外所有字符
[] :[aoe] [a-w] 匹配集合中任意⼀个字符
\d :数字 [0-9]
\D : ⾮数字
\w :数字、字母、下划线、中⽂
手机pdb文件怎么打开\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(正则表达式, 替换内容, 字符串)
回顾练习:
import re
#提取出python
key="javapythonc++php"
re.findall('python',key)[0]
>>>>>>>>>>>>>#### #提取出hello world
key="<html><h1>hello world<h1></html>"
re.findall('<h1>(.*)<h1>',key)[0]
>>>>>>>>>>>>>#### #提取170
string = '我喜欢⾝⾼为170的⼥孩'
re.findall('\d+',string)
>>>>>>>>>>>>>#### #提取出和
key='www.baidu and boob'
re.findall('https?://',key)
>>>>>>>>>>>>>#### #提取出hello
key='lalala<hTml>hello</HtMl>hahah' #输出<hTml>hello</HtMl>
re.findall('<[Hh][Tt][mM][lL]>(.*)</[Hh][Tt][mM][lL]>',key)
>>>>>>>>>>>>>#### #提取出hit.
key='bobo@hit.edu'#想要匹配到hit.
re.findall('h.*?\.',key)
>>>>>>>>>>>>>#### #匹配sas和saas
key='saas and sas and saaas'
re.findall('sa{1,2}s',key)
>>>>>>>>>>>>>#### #匹配出i开头的⾏
string = '''fall in love with you
i love you very much
i love she
i love her'''
re.findall('^.*',string,re.M)
>>>>>>>>>>>>>####爬取⽹页指定页码的图⽚
import requests
import re
import os
url = 'www.qiushibaike/pic/%s/'
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', }
#指定起始也结束页码
page_start = int(input('enter start page:'))
page_end = int(input('enter end page:'))
#创建⽂件夹
if not ists('images'):
os.mkdir('images')
#循环解析且下载指定页码中的图⽚数据
for page in range(page_start,page_end+1):
print('正在下载第%d页图⽚'%page)
new_url = format(url % page)
response = (url=new_url,headers=headers)
#解析response中的图⽚链接
e = '<div class="thumb">.*?<img src="(.*?)".*?>.*?</div>'
pa = repile(e,re.S)
python请求并解析json数据image_urls = pa.)
#循环下载该页码下所有的图⽚数据
for image_url in image_urls:
image_url = 'https:' + image_url
image_name = image_url.split('/')[-1]
image_path = 'images/'+image_name
image_data = (url=image_url,headers=headers).content
with open(image_path,'wb') as fp:
fp.write(image_data)
⼆.Xpath解析
测试页⾯数据
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>测试bs4</title>
</head>
<body>
<div>
<p>百⾥守约</p>
</div>
re evaluation<div class="song">
<p>李清照</p>
<p>王安⽯</p>
<p>苏轼</p>
<p>柳宗元</p>
<a href="www.song/" title="赵匡胤" target="_self">
<span>this is span</span>
宋朝是最强⼤的王朝,不是军队的强⼤,⽽是经济很强⼤,国民都很有钱</a>
<a href="" class="du">总为浮云能蔽⽇,长安不见使⼈愁</a>
<img src="www.baidu/meinv.jpg" alt="" />
</div>
<div class="tang">
<ul>
<li><a href="www.baidu" title="qing">清明时节⾬纷纷,路上⾏⼈欲断魂,借问酒家何处有,牧童遥指杏花村</a></li> <li><a href="www.163" title="qin">秦时明⽉汉时关,万⾥长征⼈未还,但使龙城飞将在,不教胡马度阴⼭</a></li> <li><a href="www.126" alt="qi">岐
aspire中文王宅⾥寻常见,崔九堂前⼏度闻,正是江南好风景,落花时节⼜逢君</a></li>
<li><a href="www.sina" class="du">杜甫</a></li>
<li><a href="www.dudu" class="du">杜牧</a></li>
<li><b>杜⼩⽉</b></li>
<li><i>度蜜⽉</i></li>
<li><a href="www.haha" id="feng">凤凰台上凤凰游,凤去台空江⾃流,吴宫花草埋幽径,晋代⾐冠成古丘</a></li> </ul>
</div>
</body>
</html>
常⽤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
项⽬需求:获取好段⼦中段⼦的内容和作者
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
python爬虫查询全国大学专业的录取情况
« 上一篇
Python网络安全技术的基础知识介绍
下一篇 »
推荐文章
热门文章
-
随机森林算法的改进方法
2024-10-02 -
基于随机森林算法的风险预警模型研究
2024-10-02 -
Python中的随机森林算法详解
2024-10-02 -
随机森林发展历史
2024-10-02 -
如何使用随机森林进行时间序列数据模式识别(八)
2024-10-02 -
随机森林回归模型原理
2024-10-02 -
如何使用随机森林进行时间序列数据模式识别(六)
2024-10-02 -
如何使用随机森林进行时间序列数据预测(四)
2024-10-02 -
如何使用随机森林进行异常检测(六)
2024-10-02 -
随机森林算法和grandientboosting算法 -回复
2024-10-02 -
随机森林方法总结全面
2024-10-02 -
随机森林算法原理和步骤
2024-10-02 -
随机森林的原理
2024-10-02 -
随机森林 重要性
2024-10-02 -
随机森林算法
2024-10-02 -
机器学习中随机森林的原理
2024-10-02 -
随机森林算法原理
2024-10-02 -
使用计算机视觉技术进行动物识别的技巧
2024-10-02 -
基于crf命名实体识别实验总结
2024-10-02 -
transformer预测模型训练方法
2024-10-02
最新文章
-
随机森林算法介绍及R语言实现
2024-10-02 -
基于随机森林优化的神经网络算法在冬小麦产量预测中的应用研究_百度文 ...
2024-10-02 -
基于正则化贪心森林算法的情感分析方法研究
2024-10-02 -
随机森林算法和grandientboosting算法
2024-10-02 -
基于随机森林的图像分类算法研究
2024-10-02 -
随机森林结合直接正交信号校正的模型传递方法
2024-10-02
发表评论