爬虫库(Requests-HTML)

Requests-HTML简述

Requests-HTML是在Requests的基础上进一步封装,两者都是由同一个开发者开发。Requests-HTML除了包含Requests的所有功能之外,还新增了数据清洗和Ajax数据动态渲染。

数据清洗是由lxml和PyQuery模块实现,这两个模块分别支持XPath Selectors和CSS Selectors定位,通过XPath或CSS定位,可以精准地提取网页里的数据。

Ajax数据动态渲染是将网页的动态数据加载到网页上再抓取。网页数据可以使用Ajax向服务器发送HTTP请求,再由JavaScript完成数据渲染,如果直接向网页的URL地址发送HTTP请求,并且网页的部分数据是来自Ajax,那么,得到的网页信息就会有所缺失。而Requests-HTML可以将Ajax动态数据加载到网页信息,无需爬虫开发者分析Ajax的请求信息。

Requests-HTML安装

windows系统下,cmd命令行:pip install requests-html
温馨提示:仅支持python3.6以上版本
验收是否安装成功:
在这里插入图片描述

请求方式

Requests-HTML向网站发送请求的方法是来自Requests模块,但是Requests-HTML只能使用Requests的Session模式,该模式是将请求会话实现持久化,使这个请求保持连接状态。Session模式好比我们在打电话的时候,只要双方没有挂断电话,就会一直保持一种会话(连接)状态。Session模式对HTTP的GET和POST请求也是由get()和post()方法实现,具体的使用方法如下:

from requests_html import HTMLSession

# 定义会话Session
session = HTMLSession()
url = 'https://movie.douban.com/'
# 发送GET请求
r = session.get(url)
# 发送POST请求
r = session.post(url, data={})
# 输出网页的url地址
print(r.html)

执行结果:
在这里插入图片描述
上述代码分别对同一个URL使用get()和post()方法,由于get()和post()方法都来自Requests模块,因此还可以对这两个方法设置相关的参数,如请求参数、请求头、Cookies、代理IP以及证书验证等。

Requests-HTML在请求过程中还做了优化处理,如果没有设置请求头,Requests-HTML就会默认使用源码里所定义的请求头以及编码格式。在Python的安装目录下打开Requests-HTML的源码文件(\Lib\site-packages\requests_html.py),定义了属性DEFAULT_ENCODING和DEFAULT_USER_AGENT,分别对应编码格式和HTTP的请求头

数据清洗

Requests-HTML不仅优化了请求过程,还提供了数据清洗的功能,而Requests模块只提供请求方法,并不提供数据清洗,这也体现了Requests-HTML的一大优点。使用Requests开发的爬虫,数据清洗需要调用其他模块实现,而Requests-HTML则将两者结合在一起。Requests-HTML提供了各种各样的数据清洗方法,比如网页里的URL地址、HTML源码内容、文本信息等,使用方法如下所示:

from requests_html import HTMLSession

# 定义会话Session
session = HTMLSession()
url = 'https://movie.douban.com/'
# 发送GET请求
r = session.get(url)
# 输出网页的url地址
print(r.html)

# 输出网页里全部的url地址
print(r.html.links)

# 输出网页里精准的url地址
print(r.html.absolute_links)

# 输出网页的HTML信息
print(r.text)

# 输出网页的文本信息,即去除HTML代码
print(r.html.text)



上述代码只是提取了网站的基本信息,如果想要精准地提取某个数据,可以使用find()、xpath()、search()和search_all()方法实现。首先了解这4种方法的定义及相关的参数说明:
在这里插入图片描述
实例:
以豆瓣
在这里插入图片描述
电影名在标签〈li class=“title”〉里,评分在标签〈li class=“rating”〉里,因此上述4种定位方法的使用如下所示:

from requests_html import HTMLSession

# 定义会话Session
session = HTMLSession()

url = "https://movie.douban.com/"
# 发送GET请求
r = session.get(url)

# 通过CSS Selector定义li元素,".title"代表class属性
# first=True代表获取第一个元素
print(r.html.find('li.title', first=True).text)
# 输出当前标签的属性值
print(r.html.find('li.title', first=True).attrs)

print("________分割线________")
# 查找特定文本元素
# 如果元素所在的HTML里含有containing的属性值即可提取
for name in r.html.find('li.title', containing="多力特的奇幻"):
    # 输出电影名
    print(name.text)
print("________分割线________")

# 查找全部电影名
for name in r.html.find("li.title"):
    # 输出电影名
    print(name.text)
    # 输出电影名所在标签的属性值
    print(name.attrs)
print("________分割线________")

# 通过Xpath Selector定位ul标签
x = r.html.xpath('//*[@id="screening"]/div[2]/ul/li[6]/ul')
for name in x:
    print(name.text)
print("________分割线________")
# search()通过关键字查找内容
# 一个{}代表一个内容,内容可为中文或英文等
print(r.html.search("多力特的奇幻..."))
print("________分割线________")
# search_all()通过关键字查询整个网页符合的内容
print(r.html.search_all("大话西游{}{}"))
  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python requests-html是一个用于解析HTML网页的。它提供了类似于requests的功能,使得爬取和解析网页变得更加方便。使用requests-html,你可以发送HTTP请求并获取网页内容,然后使用解析器来提取感兴趣的数据。这个的使用方法非常简单,你只需要导入HTMLSession类,创建一个会话对象,然后使用get方法获取网页内容。接着,你可以使用类似于BeautifulSoup的语法来解析网页。 如果你想通过单线程实现requests-html的基本逻辑,你可以按照如下代码进行操作:首先导入HTMLSession类,然后创建一个会话对象。接着,你可以使用一个for循环来遍历需要爬取的页面。在每次循环中,使用get方法获取页面的内容。接着,你可以使用find方法来查找页面中感兴趣的元素,并提取出相应的数据。最后,你可以将提取的数据保存到文件中。 总结来说,Python requests-html是一个功能强大的,可以用于爬取和解析HTML网页。它使用简单,提供了类似于requests的功能,同时还具备了一些解析HTML的特性。如果你需要爬取和处理网页数据,requests-html是一个不错的选择。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【Python技能树共建】requests-html初识](https://edu.csdn.net/skill/python/python-7d8a025ed5434ecc84708407e3db6d17)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python爬虫 requests-html的使用](https://download.csdn.net/download/weixin_38503483/14839001)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值