小说网站源码分享国外小说网站,网络小说外文网站

很多朋友对于小说网站源码分享国外小说网站和网络小说外文网站不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

前言

还在为看小说受到广告影响而烦恼吗?不如利用起时间,跟着本文一起入门python爬虫,实现小说自由!

介绍

本项目的全部内容包括:

1.搜索功能实现

2.根据所选小说爬取全部章节列表

3.在线阅读所选章节

正文

预配置

在一般的无反爬虫情形下,python请求网页信息的请求头较为简单,只写User-Agent项即可,可在检查中任意请求的请求头中查看

配置代码如下:

def__init__(self):\nself._headers={\n&34;:&34;\n&34;\n}\nself._search_url=&39;\nself._book_url=&39;\nself.session=requests.session()

上段代码中使用了session会话机制,可有效提升python的requests访问网站速度

搜索

在小说网站搜索万相之王,检查网络元素

发现其请求的url如上图中所示,其中的searchkey即为搜索文字的url编码

分析网页源码可知,我们所需的书名和链接均位于class属性值为grid的table标签中,使用xpath语法即可提取标签内容和标签属性

综上,这一部分输入书名搜索返回结果的代码如下:

defsearch(self,name:str):\nifname:\nresponse=self.session.get(\nurl=self._search_url+name,\nheaders=self._headers\n)\nhtml=etree.HTML(response.content.decode())\nself.bookID=html.xpath(&34;grid&34;odd&39;)\nbookNameTag=html.xpath(&34;grid&34;odd&39;)\nself.bookName=[item.textforiteminbookNameTag]\nreturnself.bookName

获取章节列表

打开任意一本书籍,检查加载书籍章节时的网络访问情况

可以发现请求的地址就是我们上一步中得到的书籍url,进一步证实了想法

在这里我们发现所有章节名称和url信息全部位于网页源码的dd标签中,同上,利用xpath语法提取

这一部分获取章节名字的代码如下:

defchapLists(self,index:int):\nresponse=self.session.get(\nurl=self._book_url+self.bookID[index],\nheaders=self._headers\n)\nself.index=index\nhtml=etree.HTML(response.content.decode())\nself.chapUrls=html.xpath(&34;box_con&34;list&39;)\nself.chapTitles=html.xpath(&34;box_con&34;list&39;)\nself.chapUrls.reverse()\nself.chapTitles.reverse()\nreturnself.chapTitles

在线阅读

我们打开任意一章小说,审查网络元素

同样可以发现所请求的网站就是上一步中得到的章节地址

在网页源码中我们发现小说正文部分位于id属性为content的div标签中,编写代码提取正文内容:

defread(self,index:int):\nresponse=self.session.get(\nurl=self._book_url+self.bookID[self.index]+self.chapUrls[index],\nheaders=self._headers\n)\ncode=response.apparent_encoding\nhtml=etree.HTML(response.content.decode())\narticleRaw=html.xpath(&34;content_read&34;content&39;)\na0=etree.tostring(articleRaw[0],encoding=code).decode(code)\na2=a0[32:-29]\narticle=&34;+self.chapTitles[index]+&34;+&34;5&39;+a2+&34;\nreturnarticle

到此,我们已经掌握了整个小说阅读的来龙去脉

总结

整个网络小说在线阅读类封装如下:

importrequests\nfromlxmlimportetree\nclassbqCrawler():\ndef__init__(self):\nself._headers={\n&34;:&34;\n&34;\n}\nself._search_url=&39;\nself._book_url=&39;\nself.session=requests.session()\ndefsearch(self,name:str):\nifname:\nresponse=self.session.get(\nurl=self._search_url+name,\nheaders=self._headers\n)\nhtml=etree.HTML(response.content.decode())\nself.bookID=html.xpath(&34;grid&34;odd&39;)\nbookNameTag=html.xpath(&34;grid&34;odd&39;)\nself.bookName=[item.textforiteminbookNameTag]\nreturnself.bookName\ndefchapLists(self,index:int):\nresponse=self.session.get(\nurl=self._book_url+self.bookID[index],\nheaders=self._headers\n)\nself.index=index\nhtml=etree.HTML(response.content.decode())\nself.chapUrls=html.xpath(&34;box_con&34;list&39;)\nself.chapTitles=html.xpath(&34;box_con&34;list&39;)\nself.chapUrls.reverse()\nself.chapTitles.reverse()\nreturnself.chapTitles\ndefread(self,index:int):\nresponse=self.session.get(\nurl=self._book_url+self.bookID[self.index]+self.chapUrls[index],\nheaders=self._headers\n)\ncode=response.apparent_encoding\nhtml=etree.HTML(response.content.decode())\narticleRaw=html.xpath(&34;content_read&34;content&39;)\na0=etree.tostring(articleRaw[0],encoding=code).decode(code)\na2=a0[32:-29]\narticle=&34;+self.chapTitles[index]+&34;+&34;5&39;+a2+&34;\nreturnarticle

在此基础上我们稍作修饰,用PyQt5为其开发一个可视化面板,最终效果如图:

小说网站源码分享国外小说网站的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于网络小说外文网站、小说网站源码分享国外小说网站的信息别忘了在本站进行查找哦。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平