爬取笔趣阁小说
爬取笔趣阁小说
仅供学习参考,其他用途概不负责
爬取链接:辰东的深空彼岸 https://www.bbiquge.net/book_132488/

当然也可以爬取其他小说,改一下id就行
book_id字段
https://www.bbiquge.net/book_132488
1. 爬取思路
- 向服务器发起请求
- 获取服务器响应response
- 解析html网页,得到想要的信息
- 保存我们爬取的信息
2. 爬取准备
从书籍详情页爬取书籍名称,作者,还有每一章的链接,这里我们使用parsel的CSS选择器
构建方式也很简单
selector = parsel.Selector(html)
book_name = selector.css('#info h1::text').get() # 小说名字
author = selector.css('#info small a::text').get() # 作者
hrefs = selector.css('.zjlist dd a::attr(href)').getall() # 小说章节url


得到每章的标题和小说内容
title = selector1.css('#main h1::text').get() # 每章的标题
content_list = selector1.css('#main #content::text').getall() # 小说内容以列表存储

3. 代码部分
import requests
import parsel
url = 'https://www.bbiquge.net/book_132488/'
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
html = r.text
selector = parsel.Selector(html)
book_name = selector.css('#info h1::text').get() # 小说名字
author = selector.css('#info small a::text').get() # 作者
hrefs = selector.css('.zjlist dd a::attr(href)').getall() # 小说章节url
for href in hrefs:
# https://www.bbiquge.net/book_132488/53726615.html
url1 = url + href # 每章的url
response1 = requests.get(url1, timeout=30)
response1.encoding = 'gbk' # 小说网页采取gbk编码,直接给出编码方式提高爬取速度
selector1 = parsel.Selector(response1.text)
title = selector1.css('#main h1::text').get() # 每章的标题
content_list = selector1.css('#main #content::text').getall() # 小说内容以列表存储
content = '\n'.join(content_list).replace(' 笔趣阁 www.bbiquge.net,最快更新\n最新章节!', '') # 去除每章开头的无关部分
with open('./book/' + book_name + '.txt', mode='a', encoding='utf-8') as f:
f.write(title)
f.write('\n')
f.write(content)
f.write('\n')
print(title)
print('下载完成!!!')
4. 总结
爬取笔趣阁比较简单,不需要伪装headers,主要是对爬取下来的网页的信息提取。