本文主要介绍python爬虫的小说《爬笔趣亭》。文中有非常详细的代码示例,对正在学习python爬虫的朋友很有帮助。有需要的可以参考一下。
目录
前言1。首先导入相关模块2。向网站发送请求并获取网站数据3。获取页面数据后提取数据4。获得小说详情页链接后,访问详情页两次,获得文章数据5。解析小说详情第6页静态页面。下载数据。
前言
今天为了上班方便钓鱼,写了一个爬碧曲亭小说的程序。嗯,其实就是找个学习python的目的,分享一下。
一、首先导入相关的模块
导入操作系统
导入请求
从bs4导入BeautifulSoup
二、向网站发送请求并获取网站数据
网站最后一位是一本书的id值,一位对应一本小说。我们以id为1的小说为例。
进入网站后发现有章节列表,于是先抢完了小说的名字。
#声明请求头
标题={
用户代理':' Mozilla/5.0(Windows NT 10.0)apple WebKit/537.36(KHTML,类似Gecko)Chrome/88 . 0 . 4324 . 182 Safari/537.36 '
}
#创建一个文件夹来保存小说文本
如果OS.path.exists('。/小说’):
Os.mkdir('。/小说/')
#访问网站并获取页面数据
response=requests . get(' http://www . biquw . com/book/1/')。文本
打印(响应)
写这个地方,学生可能会发现一个问题。当我正常访问网站时,为什么返回的数据是乱码?
这是因为页面html的编码格式与python访问和获取数据的解码格式不一致。python默认的解码方式是utf-8,但页面编码可能是GBK或GB2312等。所以我们需要让python代码对页面的解码方式有一个自动的改变。
# # # #重写访问代码
``蟒蛇皮
response=requests . get(' http://www . biquw . com/book/1/')
response . encoding=response . apparent _ encoding
打印(响应.文本)
'''
这样返回的中文数据是正确的。
'''
三、拿到页面数据之后对数据进行提取
当你通过正确的解码方法得到页面数据后,接下来就是完成静态页面分析了。我们需要从整个网页数据中获取我们想要的数据(章节列表数据)。
1.首先打开浏览器。
2.按F12调出开发者工具。
3.选择元素选择器。
4.选择我们需要的数据并定位页面中的元素。
5.观察数据的元素标签。
'''
根据上图,数据存储在A标签中。a的母标签是李,李的母标签是ul标签,div标签在ul标签之上。所以如果想获取整页的小说章节数据,需要先获取div标签。div标签包含class属性。我们可以通过class属性获得指定的div标签。详见代码~
'''
# lxml: html解析库将html代码转换成python对象,python可以控制html代码。
soup=beautiful soup(response . text,' lxml ')
book_list=soup.find('div ',class_='book_list ')。查找全部(' a ')
# soup对象获取批量数据后返回一个列表,我们可以迭代提取列表。
对于book_list中的图书:
book_name=book .文本
#获取列表数据后,需要获取文章详情页的链接,该链接在A标签的href属性中。
book_url=book['href']
四、获取到小说详情页链接之后进行详情页二次访问并获取文章数据
book _ info _ html=requests . get(' http://www . biquw . com/book/1/' book _ URL,headers=headers)
book_info_html .编码=book _ info _ html . apparent _ encoding
soup=beautiful soup(book _ info _ html . text,' lxml ')
五、对小说详情页进行静态页面分析
info=soup.find('div ',id='htmlContent ')
打印(信息.文本)
六、数据下载
用('。/novel/'book _ name '。txt ',' a ',编码=' utf-8 ')作为f:
f.write(信息.文本)
最后,我们来看看代码效果~
抓取的数据
这篇关于python爬虫的爬行小说到此为止。关于python爬行小说的更多信息,请搜索我们之前的文章或者继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。