程序员|Python爬虫系列(爬取小说并写入txt文件)

程序员|Python爬虫系列(爬取小说并写入txt文件)
文章图片

导语: 哈喽,哈喽~都说手机自带的浏览器是看小说最好的一个APP,不须要下载任何软件,直接百度就ok了。
程序员|Python爬虫系列(爬取小说并写入txt文件)
文章图片

但是小编还是想说,如果没有网,度娘还是度娘吗?能把小说下载成一个.txt文件看不是更香吗?这能难倒小编吗?坚决不能滴。于是乎,自己动手丰衣足食,Python就是万能的好吧。
程序员|Python爬虫系列(爬取小说并写入txt文件)
文章图片

【程序员|Python爬虫系列(爬取小说并写入txt文件)】

程序员|Python爬虫系列(爬取小说并写入txt文件)
文章图片

概要: 程序语言:python
第三方库:requests,parsel
数据解析方式:css/xpath
爬取网站:笔趣阁(以天蚕土豆的《斗破苍穹》为例)
程序员|Python爬虫系列(爬取小说并写入txt文件)
文章图片

代码部分展示:

# 导入第三方库 import requests import parsel# 定义请求头 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'}# 封装函数:下载小说一章节 def one_chapter(url): # 调用第三方库requests发送请求,模拟浏览器访问 response = requests.get(url, headers=headers) # 网页响应后根据网页文字内容自动转码为utf-8格式 response.encoding = response.apparent_encoding # 响应数据转换为可视的网页文本信息 html = response.text # 调用第三方库parsel,将网页文本信息转换为可被css/xpath提取的内容 selector = parsel.Selector(html)# 第一种方式:css # 通过css选择器定位并提取小说章节标题 h_1=selector.css('#wrapper > div.content_read > div > div.bookname > h1::text').get() # 通过css选择器定位并提取小说章节内容(以列表形式存放) content_1=selector.css('#content::text').getall()# 第二种方式:xpath # 通过xpath定位并提取小说章节标题 # h_2=selector.xpath('//h1/text()').get() # 通过xpath定位并提取小说章节内容(以列表形式存放) # content_2=selector.xpath('//*[@id="content"]/text()').getall()# 定义空列表存放小说章节内容 lines=[] # 创建for循环,遍历列表content_1,通过python内置函数strip去除小说章节内容前后的空格或空行 for i in content_1: lines.append(i.strip()) # 通过函数join拼接小说章节内容,拼接的列表内容以换行的形式显示 text='\n'.join(lines)# 下载保存小说 # 定位小说保存的路径 file=open(r'D:\Python\project\项目\斗破\{}.txt'.format(h_1),mode='a',encoding='utf-8') # 写入小说章节标题并换行 file.write(h_1+'\n\n') # 写入小说章节内容 file.write(text) file.close()# 主函数 if __name__ == '__main__': # 《斗破苍穹》小说网页链接 index_url='https://www.xbiquge.la/7/7877/' # 发送请求,获取网页响应 index_response=requests.get(index_url,headers=headers) # 网页响应后根据网页文字内容自动转码为utf-8格式 index_response.encoding=index_response.apparent_encoding # 调用第三方库parsel,将网页文本信息转换为可被css/xpath提取的内容 total_selector=parsel.Selector(index_response.text) # 通过css选择器定位并提取小说各章节网页链接 urls=total_selector.css('#list > dl > dd a::attr(href)').getall() # 调用封装的函数one_chapter,传入小说各章节链接以下载整部小说 for url in urls: one_chapter('https://www.xbiquge.la'+url)

程序员|Python爬虫系列(爬取小说并写入txt文件)
文章图片
????
效果: 程序员|Python爬虫系列(爬取小说并写入txt文件)
文章图片

程序员|Python爬虫系列(爬取小说并写入txt文件)
文章图片
结尾: 大家喜欢的记得点点赞,对源码感兴趣的可以私信我哟!

点击这行字体也行哦!

    推荐阅读