小说采集网站源码分享?全自动采集小说网站源码

大家好,如果您还对小说采集网站源码分享不太了解,没有关系,今天就由本站为大家分享小说采集网站源码分享的知识,包括全自动采集小说网站源码的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本小节将完成一个有趣的Scrapy爬虫项目,主要实现的主要功能如下:

实现网站登录,得到相应的个人信息,比如用户信息,我的书架等,并实现一键删除书架上所有书籍的功能;

本节和接下来的一节都是实战环节,用于梳理Scrapy爬虫框架的基本使用,也为巩固和加深前面所学知识。

1.基于Cookie的自动登录

如果是想基于基本的API方式登录,我们会面临两大难点:

手机验证码校验,如下图所示:

起点网站登录手机发送验证码

滑动验证码校验,如下图所示:

起点网站登录滑动验证码

绕过这些校验的方法超过了本教程的知识范围,故我们不再次详细讨论。好在起点网支持自动登录过程,也就是Cookie登录:

起点网支持自动登录

第一次手动登录起点,选择自动登录后,起点网站返回的Cookie信息就会保存至本地。下次再访问起点网时,通过请求带上该Cookie信息就能正确识别用户,实现自动登录过程。Cookie存在本地,就存在被代码读取的可能。通常而言,我们来使用Python中的browsercookie库可以获取浏览器的cookie,目前它只支持Chrome和FireFox两种浏览器。不过对于Chrome80.X版本的浏览器,其中的cookie信息被加密了,我们无法按照早期的操作进行cookie读取。

不过网上这个博客给出了一个解密Cookie的代码,我们拿过来简单改造下,做成一个辅助模块:

39;cbData&39;pbData&39;LOCALAPPDATA&34;Google\\Chrome\\UserData\\LocalState&39;utf-8&34;r&34;os_crypt&34;encrypted_key&39;win32&39;x01x00x00x00&39;v10&39;SELECTname,encrypted_valueasvalueFROMcookieswherehost_keylike&34;&39;USERPROFILE&39;AppData\\Local\\Google\\Chrome\\UserData\\default\\Cookies&39;value&39;name&39;value&39;qidian.com&39;_csrfToken&39;qidian.com&39;e1&39;qidian.com&39;e2&34;D:/ProgramFiles(x86)/python3/python.exe&39;_csrfToken&39;YJklLmhMNpEfuSmqZZGaK72D4sUVJty52gyKwXXX&39;e1&39;%7B%22pid%22%3A%22qd_p_qidian%22%2C%22eid%22%3A%22qd_A08%22%2C%22l1%22%3A1%7D&39;e2&39;%7B%22pid%22%3A%22qd_p_qidian%22%2C%22eid%22%3A%22qd_A10%22%2C%22l1%22%3A1%7D&https://docs.scrapy.org/en/latest/topics/items.html\n\nimportscrapy\n\n\nclassQidianSpiderItem(scrapy.Item):\nname=scrapy.Field()\n小说名\nname=scrapy.Field()\n作者\nauthor=scrapy.Field()\n阅读进度\nprogress_status=scrapy.Field()\n代码块1234567891011121314151617181920

接下来,在爬虫部分需要请求该页面然后提取相应的数据,我们的爬虫代码如下:

&34;&34;&34;\nimportjson\nfromurllibimportparse\n\nfromscrapyimportRequest\nfromscrapy.spidersimportSpider\n\nfrom.get_cookieimportget_cookies_from_chrome\nfrom..itemsimportQidianSpiderItem\n\n\nclassBookCaseSpider(Spider):\nname=&34;\n最重要的就是这个获取起点的cookie数据了,这里保存了之前用户登录的cookie信息\nself.cookie_dict=get_cookies_from_chrome(\n&34;,\n[&34;,&34;,&34;,&34;,&34;,&34;]\n)\n\ndefstart_requests(self):\nurl=&34;\n39;//table[@id=&34;]/tbody/tr&39;td[@class=&34;]/span/b[1]/a[1]/text()&39;td[@class=&34;]/span/b[1]/a[2]/text()&39;td[@class=&34;]/span/a/text()&39;td[3]/text()&39;td[@class=&34;]/a/text()&39;td[@class=&34;]/a/text()&39;category&39;name&39;latest_chapter&39;update_time&39;author&39;progress_status&39;getitem={item}&源码位置:scrapy/pipelines.py\n\n\n39;tforgettoaddyourpipelinetotheITEM_PIPELINESsetting\nusefulforhandlingdifferentitemtypeswithasingleinterface\nfromitemadapterimportItemAdapter\n\n\nclassQidianSpiderPipeline:\ndefopen_spider(self,spider):\nself.file=open(&34;,&39;,encoding=&39;)\n\ndefclose_spider(self,spider):\nself.file.close()\n\ndefprocess_item(self,item,spider):\ndata=json.dumps(dict(item),ensure_ascii=False)\nself.file.write(f&34;)\nreturnitem\n代码块1234567891011121314151617181920212223

最后别忘了在settings.py中添加这个itempipeline:

ITEM_PIPELINES={\n&39;:300,\n}\n代码块123

我们运行下这个爬虫,看看是否能抓到我们想要的数据:

PSC:\\Users\\Administrator\\Desktop>scrapycrawlbookcase\n代码块1

最后的结果如下:

获取用户的书架上书籍信息

这样,我们就成功实现了用户登录后的访问动作。接下来我们在这个基础上进一步扩展,实现清除书架上所有的书籍,类似于淘宝的一键清除购物车。

2.删除起点网用户的所有书架

首先我们随便添加一个书籍到书架上,然后进行清楚,请看下图,通过Chrome开发者工具我们可以找到删除书架上书籍的URL请求以及相应携带参数:

删除书架上的书籍

该请求一共有三个参数:

_csrfToken:可以从cookie中获取;bids:书籍编号,可以从这一行的html元素中提取;gid:发现是固定的100;

于是我们在请求到书架上的书籍信息时,解析得到书籍编号,然后对应发送删除该书籍的请求,对应的代码如下:

from.get_cookieimportget_cookies_from_chrome\nfrom..itemsimportQidianSpiderItem\n\n34;bookcase&构造函数\ndef__init__(self):\nself.cookie_dict=get_cookies_from_chrome(\n&34;,\n[&34;,&34;,&34;,&34;,&34;,&34;]\n)\n\ndefstart_requests(self):\nurl=&34;\n39;//table[@id=&34;]/tbody/tr&…\n\n39;bids&39;td[6]/div[@class=&34;]/div[@class=&34;]/a[1]/@data-id&39;gid&39;-100&39;_csrfToken&39;_csrfToken&34;https://my.qidian.com/ajax/BookShelf/DelBook?{}&39;对应删除url请求={}&39;get&34;&34;\n删除结果:{&34;:0,&34;:{&34;:{&34;:0,&34;:&34;}},&34;:&34;}\n&34;&39;删除响应:{}&39;msg={}&39;msg']))\n\n代码块123456789101112131415161718192021222324252627282930313233343536373839404142434445464748

是不是非常简单?来看看最后运行的效果:

启动清除书架信息爬虫

最后用户书架数据

是不是很有意思?基于这样的操作,我们想想淘宝一键清除购物车功能,是不是也能这样实现?还有每次明星的恋情有变,连夜删除上千条微博,导致手指酸痛,我们是否能提供一键清除微博的功能,解决他们的痛点?这些事情是不是想想就很激动?还等什么,心动不如行动,这个就作为课后作业吧,希望你能独立完成淘宝的一键清除购物车代码。

3.小结

本节中,我们基于Scrapy框架讲解了下如何简单地实现自动登录操作,避开滑动验证码的二次验证。然后,在登录的基础上实现删除用户的所有书架操作。

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

Published by

风君子

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