Python爬虫实战:使用Requests和Lxml库下载小说
Python爬虫实战:使用Requests和Lxml库下载小说
本教程将教你如何使用Python的Requests和Lxml库,编写爬虫程序自动下载小说。代码清晰易懂,适合初学者学习。
安装必要的库
首先,你需要安装Requests和Lxml库。你可以使用以下命令进行安装:
pip install requests
pip install lxml
代码示例
import requests
from lxml import etree
url = input('请输入小说目录链接:')
re = requests.get(url)
re.encoding = 'utf-8'
selector = etree.HTML(re.text)
book_name = selector.xpath('//div[@class='bookname']/h1/text()')[0]
print(f'{book_name}开始下载')
chapter_urls = selector.xpath('//div[@id='list']//a/@href')
chapter_names = selector.xpath('//div[@id='list']//a/text()')
for i in range(len(chapter_urls)):
chapter_url = url + chapter_urls[i]
chapter_name = chapter_names[i]
re1 = requests.get(chapter_url)
re1.encoding = 'utf-8'
selector1 = etree.HTML(re1.text)
content = selector1.xpath('//div[@id='content']/text()')
with open(f'{book_name}.txt', 'a', encoding='utf-8') as f:
f.write(f'{chapter_name}
')
for c in content:
f.write(c.strip())
f.write('\n')
print(f'{chapter_name}下载完成')
print(f'{book_name}下载完成')
代码解析
- 导入必要的库:
requests用于发送 HTTP 请求,lxml用于解析 HTML 内容。 - 获取小说目录链接:使用
input()函数让用户输入小说目录链接。 - 发送 HTTP 请求:使用
requests.get()函数发送 GET 请求,获取小说目录页面的 HTML 代码。 - 解析 HTML 代码:使用
etree.HTML()函数将 HTML 代码解析成一个etree对象,方便我们使用 XPath 语法提取数据。 - 获取小说名称:使用
selector.xpath('//div[@class='bookname']/h1/text()')[0]获取小说名称。 - 获取所有章节的链接和名称:使用
selector.xpath('//div[@id='list']//a/@href')和selector.xpath('//div[@id='list']//a/text()')获取所有章节的链接和名称。 - 循环遍历所有章节:使用
for循环遍历所有章节的链接和名称。 - 获取章节内容:使用
requests.get()函数获取章节内容的 HTML 代码,使用etree.HTML()函数解析 HTML 代码,使用selector1.xpath('//div[@id='content']/text()')获取章节内容。 - 保存章节内容:使用
with open(...) as f打开一个文件,使用f.write()函数将章节名称和内容写入文件。 - 打印下载进度:使用
print()函数打印下载进度。
注意事项
- 请确保你所爬取的网站允许爬取,并遵守其 robots.txt 文件的规则。
- 请不要过度频繁地爬取网站,以免给网站服务器带来压力。
- 爬取过程中可能会遇到各种错误,例如网络错误、解析错误等,你需要根据实际情况进行处理。
总结
本教程教会了你如何使用 Python 的 Requests 和 Lxml 库编写简单的爬虫程序,自动下载小说。希望对你有所帮助!
原文地址: https://www.cveoy.top/t/topic/ojN3 著作权归作者所有。请勿转载和采集!