Requests-HTML 对 Requests 进行了封装,添加了解析 HTML 的接口,是一个 Python 的 HTML 解析库
由于该库是解析 html
对象,所以可以查看对应的 html
对象包含哪些方法与与属性。
html 对象的方法包括
find
:提供一个 css 选择器,返回一个元素列表;xpath
:提供一个 xpath 表达式,返回一个元素列表;search
: 根据传入的模板参数,查找 Element 对象;search_all
:同上,返回的全部数据;
html 对象的属性包括
links
:返回页面所有链接;absolute_links
:返回页面所有链接的绝对地址;base_url
:页面的基准 URL;html
,raw_html
,text
:以 HTML 格式输入页面,输出未解析过的网页,提取页面所有文本;
示例:爬取下面网站对于的网站名和网址
from requests_html import HTMLSession
session = HTMLSession()
page_size = int(input("请输入总页码:"))
for page in range(1, page_size + 1):
world = session.get(f'http://www.world68.com/top.asp?t=5star&page={page}')
world.encoding = 'gb2312'
# world.html.encoding = "gb2312"
# print(world.text)
print("正在采集数据", world.url)
title_a = world.html.find('dl>dt>a')
for item in title_a:
name = item.text
url = item.attrs['href']
with open('webs.txt', "a+", encoding="utf-8") as f:
f.write(f"{name},{url}\n")
world.encoding
,设置了网页解析编码;world.html.find('dl>dt>a')
通过 css 选择器,查找所有的网页标题元素;item.text
提取网页标题内容;item.attrs['href']
获取元素属性,即网站域名
输出: