Requests-HTML爬虫简单了解

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

数据清洗时是由lxml和PyQuery提供的。

数据清洗

from requests_html import HTMLSession
session = HTMLSession()

url = "https://movie.douban.com/"
r = session.get(url)
print(r.html)     #输出网页的url
print(len(r.html.links))  # 网页里的全部的url
print(len(r.html.absolute_links)) # 输出网页里精准的url地址
print(r.text) #输出网页的html信息
print(r.html.text)  # 输出网页的全部文本信息 去除html代码

精确定位

在这里插入图片描述

通过CSS Selector定位:

<li class="title">
	<a class="" href="https://movie.douban.com/subject/32659890	/?from=showing" 	onclick="moreurl(this, {from:'mv_a_tl'})">我和我的祖国...</a>
</li>
from requests_html import HTMLSession
# 定义会话
session = HTMLSession()
url = "https://movie.douban.com/"
# 发送get请求
r = session.get(url)
#通过CSS Selector定位li标签
print(r.html.find("li.title>a",first=True).html)
print(r.html.find("li.title",first=True).html)
print(r.html.find("li.title",first=True).text)
print(r.html.find("li.title",first=True).attrs)

输出所示

		我和我的祖国...
		{'class': ('title',)}

查找特定文本的元素:
寻找名字里面含有“我”的电影:

e = r.html.find("li.title",containing="我")
for item in e:
    print(item.text)

送我上青云
我和我的祖国...

通过Xpath定位:

输出所有电影的名字

x = r.html.xpath('//*[@id="screening"]/div[2]/ul')
for name in x:
    a = name.find("li.title")#screening > div.screening-bd > ul > li:nth-child(1) > ul > li.title
    for item in a :
        print(item.text)
###########################
# 稍微改动一下,效果完全不变,只是体会一下“>"的用法
a = name.find("li>ul>li.title")
发布了16 篇原创文章 · 获赞 3 · 访问量 1074

猜你喜欢

转载自blog.csdn.net/weixin_42233120/article/details/101540698