python 爬虫入门之requests-html

其实本来应该早一点发的,但是我用织梦后台编辑文章的时候,不小心点了网页的x号,于是乎,内容白写了,然后我又开始重新写了。

requests库,是一个第三方的Python库,用来模拟发送HTTP请求。它通常用于爬虫或接口的测试。与urllib等其他的系统库相比,虽然他们的功能相似,但是requests相对来说更简单、方便和高效。

首先我们先把这个requests-html安装一下,进入运行框然后输入 pip3 install requests-html 即可安装成功,在之后我们把该库导入即可:

1
import requests_html

接下来准备了一个小例子给大家,本来其实每句话都有分析的,但是由于是第二遍写,就不那么麻烦了:

1
2
3
4
5
6
7
import requests_html

# 导入requests-html库
session = requests_html.HTMLSession() # 创建一个session的变量,用来取代requests_html.HTMLSession()要不之后字太多而纸样只需要操作session
res = session.get("https://www.datehoer.com/") # get一下网址,这里我们用博客主页做演示
res.encoding = "utf-8" # 获取的编码格式
print(res.text) # 输出获取的内容

最简单的一种方法。 之后我们来介绍一下其他的方法,也就是requests-html的进阶。

获取链接:

1
print(res.html.absolute_links)

这个就是获取链接的方式,绝对路径,这样就会直接获取完整的链接’https://www.datehoer.com/wdsj/'而如果直接获取链接呢?

1
print(res.html.links)

‘/wdsj/2020/1111/42.html’ 则会出现上面这样不完整的链接,各有各的用处吧,不过大多数还是要加一下绝对路径的链接的。

XPATH

这个的抓取我们看一下动图 requests-html

获取的内容为 /html/body/article 这个:

1
print(res.html.xpath("/html/body/article", first=True).text)

这个就是把该 xpath 代表的内容输出出来的代码。 而 xpath 有 4 个参数:

  • selector,要用的 XPATH 选择器;
  • clean,布尔值,如果为真会忽略HTML中 style 和 script 标签造成的影响(原文是 sanitize,大概这么理解);
  • first,布尔值,如果为真会返回第一个元素,否则会返回满足条件的元素列表;
  • _encoding,编码格式。

然后我们还有 html+css 获取的方法

还是以博客的主页为例,我们要获取头部标签内的内容,而我们 div 里有一个 class 为 header 的标签,我们就获取它的内容吧。

1
2
hc = res.html.find("div.header", first=True)
print(hc.text)

只要写出该内容的标签传递关系即可获取内容:

1
主页 技术分享 日常学习 法制专栏 我的世界 关于我 检索标题 智能模糊 搜索

这就是具体的获取内容了,相应的,具体你需要什么内容需要通过属性来进行判断。

1
print(hc.search("主{}")[0])

比如说这个,这个就是查询内容了,搜索之前获取的 div.header 里有没有以主为开头的内容,然后返回获取的值。再比如说还有许多的方法,就不一一在此列出了,其余的我们且听下回分晓!

作者

datehoer

发布于

2020-11-14

更新于

2023-10-19

许可协议

评论