上一篇文章 简书首页数据抓取的答疑 ,分析了在抓取简书首页时的问题,还有一些小的细节需要注意。
一、Scrapy: url length > 2083 的问题
按照上一篇文章的思路方法,构造好URL,加上headers参数,能够顺利获取到第2、3、4页的数据,但是加载到第5页时出现一个错误:
是说url过长,超过2083个字符。第5页的url有81个参数(80个id和page),一共2425个字符,用浏览器(chrome, firefox)直接打开访问能正确加载到数据。
关于url too long 的问题,查了一下,有网友测试了个浏览器和服务器支持的最大URL长度,附表如下:
浏览器 | URL长度限制 |
---|---|
IE | URL最大限制是2083个字节,Path长度最大是2048字节(Get请求)。 |
Firefox | 65536 |
Safari | 80000以上 |
Opera | 190000字节以上 |
Chrome | 8182字节 |
Apache Server | 8192字节 |
IIS | 16384字节 |
Perl HTTP::Daemon | 至少8000字节 |
在请求时USER_AGENT 的设置并不是IE,但还是有这个限制。我试了一下用requests直接发送请求,可以获取到数据。
scrapy 在setting.py中增加一个参数即可:
URLLENGTH_LIMIT = 20000
再次启动爬虫,正常抓取。但是抓取到第8页时,发现就没有数据返回了,状态码是400。在浏览器中依次加载到第8页也是一样,获取不到数据,暂不清楚原因。
有一点需要更正:虽然分页url传递的id数量增加了,下一页每次获取的数据仍然是20条。
二、结构化数据需要加上判断
在页面文章信息中,每篇文章都有浏览量,评论量(包括0),获赞量,但不是每一篇文章都有 打赏和 所属专题。
解决以上问题,就能抓取到简书首页文章的相关数据。