例如:
#会告诉我们最后一次请求是否成功
#会返回给我们最后一次请求的状态
就是这样。
4、使用pyspider抓取起点中文网小说数据
pyspider是国人开发的相当好用的爬虫框架。虽然网上教程不是很多,但是文档详细,操作简单,非常适合用来做爬虫练习或者实现一些抓取数据的需求。
本文就以抓取起点中文的小说作品基础信息作为目标,讲解如何使用pyspider框架采集数据。
关于为何要选择起点作为目标,其一、笔者作为网文爱好者,也想收集起点小说作品信息,找些热门小说看;其二、起点作为比较成熟的站,再反爬虫方面应该有对应策略,刚好练习一下爬虫怎么规避这些策略。
在阅读本文之前,建议先看一下文档及框架作者本人写的中文教程
pyspider爬虫教程(一):HTML和CSS选择器
pyspider爬虫教程(二):AJAX和
pyspider爬虫教程(三):使用PhantomJS渲染带JS的页面
安装很简单,如果已安装pip,直接执行命令
由于目前很多网站都是动态js生成页面,需要安装PhantomJS来获得js执行后的页面,而不是原本静态的html页面,我们再来装一下
待安装完成后,我们先看一下pyspider对应的可执行命令
在这里我们直接执行如下命令启动,更复杂的命令参看文档
首先看一下启动成功后,浏览器访问127.0.0.1:5000地址的界面如下
点击Create,新建项目
点击生成的项目名,进入脚本编写&调试页面
先看一下对应的爬虫脚本
1.测试抓取时,运行一段时间后出现所有抓取链接均FetchError的报错,抓取失败
失败原因:未设置User-Agent及抓取速率太快,导致IP被封禁
解决办法:
1)设置User-Agent,调整速率从
2)使用代理IP,防止被封禁,这里笔者尝试使用搭建简易免费代理IP池,但是由于免费代理大多不可用,会导致抓取不稳定,还是决定放弃使用
2.笔者本来是打算通过不断抓取下一页的链接,来遍历所有小说作品的,可是由于这部分是JS动态生成的,虽然使用phantomjs,能解决这个问题(具体见作者教程3),但是使用phantomjs会导致抓取效率变低,后来还是选择采用固定首尾页数(PAGE_START,PAGE_END)的方法
3.当使用css选择器有多个数据时,怎么获取自己想要的
比如在小说详细页,有字数,点击数,数三个
其cssselector均为.book-infopem,要获取对应的次数只能使用pyquery的.eq(index)的方法去获取对应的文本数据了
4.如果遇到抓取的链接是https,而不是http的,使用方法时,需要加入参数validate_cert=False,同时需要确保pyspider--version版本再0.3.6.0之上
具体解决方法,可以查看如下链接:
PySpiderHTTP599:SSLcertificateproblem错误的解决方法
简单数据分析之二
采用SCWS中文分词对所有作品名字进行分词统计,得到出现频率最高的排行
看起来如果写小说,起个『重生之我的神魔异世界』这类标题是不是吊炸天
简单数据分析之三
简单统计一下起点作者的作品数排序
武侠精品应该是起点的官方作者号吧,不然194本作品也太恐怖了
也发现了不少熟悉的大神,比如唐家三少,流浪的蛤蟆,骷髅精灵等,有些作品还是可以看看的
5、Python使用beautifulsoup如何爬取小说正文全部内容?
单章的部分应该没问题,去目录页爬下章节链接存列表里遍历爬取就行了吧。
另外通版常权手机版站点的反爬会弱一些,有没有考虑爬手机站?
github、csdn、博客园等等站会有相关的博文涉及相关爬虫和源码,去参考一下也好。
还解决不了的话先把“全部正文,不知道咋回事目录都爬不下来”的情况说的更详细一点。