Python 爬虫下载(爬取)笔趣阁小说下载(python怎么读)

网友投稿 659 2022-08-22


Python 爬虫下载(爬取)笔趣阁小说下载(python怎么读)

一. 数据来源分析

1. 确定需求         爬取笔趣阁小说内容 (一本)         进行搜索功能 (当输入一本小说名字或者作者选择下载相应的小说内容)     2. 数据来源分析

二. 代码实现过程

1. 发送请求 对小说章节列表页发送请求     2. 获取数据 获取网页源代码 (响应体的文本数据response.txt)     3. 解析数据 提取小说名字 / url地址     4. 发送请求 对小说章节url地址发送请求     5. 获取数据 获取网页源代码 (响应体的文本数据response.txt)     6. 解析数据 提取小说的内容 / 小说章节名     7. 保存数据     8. 实现一个搜索功能

三、环境介绍

python 3.6 解释器     pycharm 编辑器 专业版 是需要激活码          requests >>> pip install requests     parsel >>> pip install parsel     pandas >>> pip install pandas     tqdm >>> pip install tqdm

四、完整代码

import requests # pip install requestsimport parsel # 数据解析 pip install parselimport pandas as pd # pip install pandasfrom tqdm import tqdm # pip install tqdmheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}def get_response(html_url): '''发送请求''' response = requests.get(url=html_url, headers=headers) response.encoding = response.apparent_encoding return responsedef save(name, title, content): """保存小说""" with open(name + '.txt', mode='a', encoding='utf-8') as f: f.write(title) f.write('\n') f.write(content) f.write('\n') # print(title)def get_novel_url(html_url): """获取小说章节url""" response = get_response(html_url) # 把获取到的html字符串数据 转成 selector 对象 selector = parsel.Selector(response.text) name = selector.css('#info h1::text').get() href = selector.css('#list dd a::attr(href)').getall() # href = ['+ i for i in href] for index in tqdm(href): """获取小说的内容""" response = get_response(index) selector = parsel.Selector(response.text) title = selector.css('.bookname h1::text').get() # getall() 获取所有的标签内容 返回的是列表 get 获取一个 返回的是字符串 content_list = selector.css('#content::text').getall() # 把列表转换成字符串 content = ''.join(content_list) save(name, title, content)if __name__ == '__main__': # url = ' # get_novel_url(url) # print(response.text) while True: print('输入0即可退出程序') word = input('请输入你要下载的小说名字(作者): ') if word == '0': break search_url = ' data = { 'searchkey': word, 'searchtype': 'articlename' } response_1 = requests.post(url=search_url, data=data, headers=headers) response_1.encoding = response_1.apparent_encoding selector_1 = parsel.Selector(response_1.text) # 第一次提取 trs = selector_1.css('#nr') lis = [] if trs: for tr in trs: novel_name = tr.css('td:nth-child(1) a::text').get() novel_id = tr.css('td:nth-child(1) a::attr(href)').get().replace('/', '') author = tr.css('td:nth-child(3)::text').get() dit = { '书名': novel_name, '作者': author, '书ID': novel_id, } lis.append(dit) print(f'一共搜索到{len(lis)}数据内容') search_result = pd.DataFrame(lis) print(search_result) num = input('请输入你要下载的小说序号: ') # 序号对应的就是列表里面索引位置 num_id = lis[int(num)]['书ID'] # 直接获取小说ID link_url = f' get_novel_url(link_url) print(f"{lis[int(num)]['书名']}已经下载完成了") else: print('抱歉,搜索没有结果^_^')


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 全面系统介绍反射的运用
下一篇:Qt Quick入门 -- 安装Qt6(晴天影视)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~