爬虫中的正则表达式、xpath、bs4

爬虫就是代替人去模拟浏览器进行网页操作
1 正则表达式
第一个作用 抓取数据 ,常用于数据获取、数据挖掘、AI等
第二个作用 功能实现 如抢票等
我讲一个正则表达式 .*?
其中.*表示匹配任意不换行的字符串 加上问号表示尽可能匹配短的字符

下面是一个例子:(获取网页源代码可以放到网页空白处右键 查看网页源代码)
MyStr = ‘’’

<link rel="apple-touch-icon" href="https://img3.doubanio.com/f/movie/d59b2715fdea4968a450ee5f6c95c7d7a2030065/pics/movie/apple-touch-icon.png">
<link href="https://img3.doubanio.com/f/shire/bf61b1fa02f564a4a8f809da7c7179b883a56146/css/douban.css" rel="stylesheet" type="text/css">
<link href="https://img3.doubanio.com/f/shire/ae3f5a3e3085968370b1fc63afcecb22d3284848/css/separation/_all.css" rel="stylesheet" type="text/css">
<link href="https://img3.doubanio.com/f/movie/8864d3756094f5272d3c93e30ee2e324665855b0/css/movie/base/init.css" rel="stylesheet">
<script type="text/javascript">var _head_start = new Date();</script>
<script type="text/javascript" src="https://img3.doubanio.com/f/movie/0495cb173e298c28593766009c7b0a953246c5b5/js/movie/lib/jquery.js"></script>
<script type="text/javascript" src="https://img3.doubanio.com/f/shire/92c148e64e4f81dc6fad7f3355308ee8cacecd92/js/douban.js"></script>
<script type="text/javascript" src="https://img3.doubanio.com/f/shire/0efdc63b77f895eaf85281fb0e44d435c6239a3f/js/separation/_all.js">

‘’’
import re
fpn = r’<link.? href="(.?)"’
r= re.findall(fpn,MyStr)
for i in r:
print(i)

运行程序就可以爬取到我们想要的东西
2. 第二个是xpath(指不确定的路径,确定了路径之后就可以得到我们想要的东西)(网页 右键 检查 就会有相应的Xpath路径,但是第一次最好自己动手操作)
同样是爬取上面网址里的内容,代码如下

#先生成一个element对象
from lxml import etree
e=etree.HTML(MyStr)
#开始导航
r = e.xpath("//link/@href")
for i in r:
print(r)

代码中部分语句的含义
//标签下面所有的数据
/ 逐层查找
@ 选取属性
3. bs4
#用到其中的俩个方法 find()返回数据的第一个
find all()返回所有数据

我们简单介绍一下bs4中的库。Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.
从https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/#中可以查看相关文档介绍。

我们还是爬取1中的网址,例子代码如下
from bs4 import BeautifulSoup
soup = BeautifulSoup(MyStr,‘lxml’)
r = soup.find_all(‘link’)
for i in r:
print(i.get(‘href’))

猜你喜欢

转载自blog.csdn.net/qwerty1372431588/article/details/104862930