网页小说抓取 ios(上班想爬取笔阁小说?找个目的学习python分享)
优采云 发布时间: 2022-01-11 01:08网页小说抓取 ios(上班想爬取笔阁小说?找个目的学习python分享)
想在工作中钓鱼?为了找鱼方便,今天写了一个爬毕格小说的程序。嗯,其实我是在找一个学习python的目的,分享一下。
1. 先导入相关模块
import os<br />
import requests<br />
from bs4 import BeautifulSoup<br />
2. 向 网站 发送请求并获取 网站 数据
网站链接的最后一个数字是一本书的id值,一个数字对应一本小说。我们以id为1的小说为例。
进入网站后发现有章节列表,那么我们先完成小说列表名称的爬取
# 声明请求头<br />
headers = {<br />
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'<br />
}
# 创建保存小说文本的文件夹<br />
if not os.path.exists('./小说'):<br />
os.mkdir('./小说/')
# 访问网站并获取页面数据<br />
response = requests.get('http://www.biquw.com/book/1/').text<br />
print(response)<br />
【外链图片传输失败,源站可能有防盗链机制,建议保存图片直接上传(img-Uu2ddyQB-32)(.\素材图片\中文显示乱码.png)]
写过这个地方的学生可能发现了一个问题。正常去访问网站,为什么返回的数据是乱码?
这是因为页面html的编码格式和我们用python访问和获取数据的数据的解码格式不一致。python默认的解码方式是utf-8,但是页面编码可能是GBK或者GB2312等,所以我们需要让python代码所在页面的解码方式自动变化
#### 重新编写访问代码<br />
```python<br />
response = requests.get('http://www.biquw.com/book/1/')<br />
response.encoding = response.apparent_encoding<br />
print(response.text)
'''<br />
这种方式返回的中文数据才是正确的<br />
'''<br />
3. 获取页面数据后提取数据
通过正确的解码方式得到页面数据后,需要完成静态页面分析。我们需要从整个网页数据(章节列表数据)中获取我们想要的数据
首先打开浏览器,按F12调出开发者工具。选择元素选择器。在页面中选择我们想要的数据,定位到数据所在的元素标签。
'''<br />
根据上图所示,数据是保存在a标签当中的。a的父标签为li,li的父标签为ul标签,ul标签之上为div标签。所以如果想要获取整个页面的小说章节数据,那么需要先获取div标签。并且div标签中包含了class属性,我们可以通过class属性获取指定的div标签,详情看代码~<br />
'''<br />
# lxml: html解析库 将html代码转成python对象,python可以对html代码进行控制<br />
soup = BeautifulSoup(response.text, 'lxml')<br />
book_list = soup.find('div', class_='book_list').find_all('a')<br />
# soup对象获取批量数据后返回的是一个列表,我们可以对列表进行迭代提取<br />
for book in book_list:<br />
book_name = book.text<br />
# 获取到列表数据之后,需要获取文章详情页的链接,链接在a标签的href属性中<br />
book_url = book['href']<br />
4.获取小说详情页链接后,再次访问详情页,获取文章的数据
book_info_html = requests.get('http://www.biquw.com/book/1/' + book_url, headers=headers)<br />
book_info_html.encoding = book_info_html.apparent_encoding<br />
soup = BeautifulSoup(book_info_html.text, 'lxml')<br />
5. 对小说详情页进行静态页面分析
info = soup.find('div', id='htmlContent')<br />
print(info.text)<br />
6. 资料下载
with open('./小说/' + book_name + '.txt', 'a', encoding='utf-8') as f:<br />
f.write(info.text)<br />
最后再来看看代码效果~
抓取的数据
文章本文到此结束,只是想感谢一些阅读我的人文章。
退休后,我一直在学习如何写 文章。说实话,每次在后台看到一些读者的回复,我都觉得很欣慰,所以想把自己采集的一些编程干货贡献给大家,回馈每一位读者,希望对大家有所帮助。
干货主要有:
①2000多本Python电子书(主流经典书籍应该都有)
②Python标准库资料(最全中文版)
③项目源码(四十或五十个有趣经典的培训项目及源码)
④Python基础入门视频等(适合小白学习)
*如果可以使用,可以直接拿走。你可以在我的QQ技术交流群里自己带走(无广告),群号是980758007。*
python爬取笔曲格小说,有趣实用更多相关文章bs4爬取笔曲格小说
参考链接:Module:requests,bs4,queue,sys,time Step:Give URL-->Access U...
Jsoup-基于Java的Web爬虫
注意力!仅供学习交流使用,请勿在歪歪扭扭的地方使用!技术只是工具!关键在于使用!今天,我接触到一个有趣的框架,它充当网络爬虫。他可以像 JS 一样提取网页的内容,体验 Jsoup 服务器生成会话(唯一)。会话ID ...