Python爬虫系列:爬取小说并写入txt文件

Python爬虫系列:爬取小说并写入txt文件_第1张图片

导语:

哈喽,哈喽~都说手机自带的浏览器是看小说最好的一个APP,不须要下载任何软件,直接百度就ok了。

但是小编还是想说,如果没有网,度娘还是度娘吗?能把小说下载成一个.txt文件看不是更香吗?这能难倒小编吗?坚决不能滴。于是乎,自己动手丰衣足食,Python就是万能的好吧。

Python爬虫系列:爬取小说并写入txt文件_第2张图片

Python爬虫系列:爬取小说并写入txt文件_第3张图片


概要:

程序语言:python

第三方库:requests,parsel

数据解析方式:css/xpath

爬取网站:笔趣阁(以天蚕土豆的《斗破苍穹》为例)

Python爬虫系列:爬取小说并写入txt文件_第4张图片

代码部分展示:


# 导入第三方库
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文件_第5张图片 ​​​​

效果:

Python爬虫系列:爬取小说并写入txt文件_第6张图片

Python爬虫系列:爬取小说并写入txt文件_第7张图片

 结尾:

大家喜欢的记得点点赞,对源码感兴趣的可以私信我哟!

点击这行字体也行哦!

你可能感兴趣的:(程序员,Python,python,html,开发语言)