下面是详细讲解“python使用XPath解析数据爬取起点小说网数据”的完整攻略:
第一步:安装必要的库
使用XPath解析数据需要安装lxml库。
pip install lxml
第二步:发送请求
在这里,我们使用requests库发起请求,并将HTML文档作为response变量保存。
import requests
url = 'https://www.qidian.com/all'
response = requests.get(url)
第三步:解析HTML文档
使用lxml库的html模块将response的文本解析成HTML元素对象,并使用XPath语法提取所需的数据。
from lxml import html
# 将HTML文档解析成HTML元素对象
html_element = html.fromstring(response.text)
# 获取小说列表
novels = html_element.xpath('//ul[@class="all-img-list cf"]/li')
for novel in novels:
# 获取小说封面链接
cover_url = novel.xpath('.//a[@class="img-box"]/img/@src')[0]
# 获取小说标题
title = novel.xpath('.//h4/a/text()')[0]
# 获取小说作者
author = novel.xpath('.//span[@class="name"]/a/text()')[0]
print('标题:{}'.format(title))
print('作者:{}'.format(author))
print('封面链接:{}'.format(cover_url))
print()
上述代码使用XPath语法从HTML元素对象中提取小说列表、每本小说的封面链接、标题和作者,并在控制台打印输出结果。
下面是另一个示例,我们可以获取小说的具体内容。
# 获取小说详情页链接
novel_detail_url = novel.xpath('.//h4/a/@href')[0]
# 发送请求
response = requests.get(novel_detail_url)
# 将HTML文档解析成HTML元素对象
html_element = html.fromstring(response.text)
# 获取小说章节列表
chapters = html_element.xpath('//div[@class="volume-wrap"]/div[@class="volume"]/ul[@class="cf"]/li')
for chapter in chapters:
# 获取章节标题和链接
chapter_title = chapter.xpath('.//a/text()')[0]
chapter_url = chapter.xpath('.//a/@href')[0]
# 发送请求
response = requests.get(chapter_url)
# 将HTML文档解析成HTML元素对象
html_element = html.fromstring(response.text)
# 获取章节内容
content = html_element.xpath('//div[@class="read-content j_readContent"]/p/text()')
# 打印输出结果
print('章节标题:{}'.format(chapter_title))
print('章节内容:{}'.format('\n'.join(content)))
print()
上述代码使用XPath语法从小说详情页中提取每个章节的标题、链接和具体内容,并在控制台打印输出结果。
注意:爬取网站数据需要尊重网站规则,不要频繁访问同一个页面,避免对网站造成影响。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python使用XPath解析数据爬取起点小说网数据 - Python技术站