苏妲己和杨戬谈恋爱,新版《封神演义》是再造经典还是辣眼睛?
2024-12-06 14:00:22
新手也能学会,35行代码爬一部小说
我是一个网络小说爱好者,虽然在网上看小说也很方便,但是在没有网络的环境下或者月底没有流量的时候,企不是尴尬了?下面就教你使用python下载一部小说,慢慢看,想怎么看就怎么看。废话不多说,我们开始。
使用的环境:win7,python3.6(相关python模块requests,beautifulsoup)
首先,百度一下你喜欢的小说
在这里我选择排名第一的
然后,进入网站观察其结构,发现在这个页面下较容易爬取
第三,拿出我们的分析利器:开发者模式(按F12)
点击Network选项卡,重新刷新页面。我们会发现在Doc选项卡下面找到了我们需要的内容。
PS:查看内容一般在Preview选项卡下面看
返回Headers选项卡把,网址和Request headers记下来,后面有用。
下图是查看网页源代码(在网页右键--->查看源代码),我们需要提取见容的图。
第四,我们开始写代码。
1、我们以第一卷为例,先提取每一章的标题和网址
是不是很简单!
2、使用Beautifulsoup解析获得的网页内容。
在上面的分析中我们发现,我们需要的章节标题和内容放在
这个标签里面,而且container是唯一的,这就好办多了。
两行代码搞定。打印一下,是不是我们需要的?是不是很简单?
3、我们定义两个列表,用来存放章节标题和网址
4、循环我们得到的网址,获取其具体的内容
打印出来!虽然不是很完美,但是内容我们是有了。
第五,把得到的内容保存到硬盘上。这里就不具体讲了直接上代码。
需要注意的是,我们要爬取二十三卷的内容,这时候我们可以把上面的所有代码封装在一个函数里,把每一卷的网址传进去,循环调用23次就可以了。
这是成果,56.5M非常的大,所以建议大家分几个TXT存放。
以下是源码,请多多指教!
import requests from bs4 import BeautifulSoup import time def main_function(url_part): url = 'https://c.quk.cc/3/z6/r1n4hkihofp' + url_part + '.html' headers = {'Referer': url, 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} req = requests.get(url, headers=headers) time.sleep(1) req.encoding = 'utf-8' bs = BeautifulSoup(req.text, 'lxml') content = bs.select_one(".container") chapter_list = [] titles = [] for link in content.select('a'): chapter_list.append(link.get('href')) titles.append(link.text) print(chapter_list) print(titles) for i in chapter_list: chapter_content = requests.get(i) chapter_content.encoding = 'utf-8' chapter_bs = BeautifulSoup(chapter_content.text, 'lxml') chapter = chapter_bs.find('h2').string # 写入章节标题 with open('超级兵王.txt', 'a', encoding='utf-8') as f: f.write(chapter) # 写入章节内容 contents = chapter_bs.select_one('.post_entry').text with open('超级兵王.txt', 'a', encoding='utf-8') as f: f.write(contents) part_list = ['di-yi-bu', 'di-er-bu', 'di-san-bu', 'di-si-juan', 'di-wu-juan', 'di-liu-juan', 'di-qi-bu', 'di-ba-bu', 'di-jiu-bu', 'di-shi-bu', 'di-shiyi-bu', 'di-shier-bu', 'di-shisan-bu', 'di-shisi-juan', 'di-shiwu-juan', 'di-shiliu-juan', 'di-shiqi-juan', 'di-shijiu-juan', 'ershijuan', 'di-ershier-juan', 'di-ershisan-juan'] for part in part_list: main_function(part)
2024-12-06 14:00:22
2024-12-06 06:54:34
2024-12-06 06:52:19
2024-12-06 06:50:04
2024-12-06 06:47:50
2024-12-06 06:45:35
2024-12-06 06:43:21
2024-12-06 06:41:06
2024-12-06 06:38:51
2024-12-06 06:36:36
2024-12-06 06:34:22
2024-12-05 23:28:33
2024-12-05 23:26:18
2024-12-05 23:24:03
2024-12-05 23:21:49
2024-12-05 23:17:19
2024-12-05 23:15:04
2024-12-05 23:12:50
2024-12-05 23:10:35