webmagic
webmagic copied to clipboard
关于请求丢失的问题
我今天在使用免费代理,正常应该是要爬取1000个页面,结果只爬取了几十个。 最后发现是因为代理质量查,经常导致请求后返回400状态码,响应体也是错误的。但其实不用代理就能返回正确内容。
我原本以为这样的情况一定会走重试机制,但最后发现是,HttpClientDownloader中不论htttp请求的响应体状态码是200或400,只要请求没有报错。那么Page.downloadSuccess就置为true。us.codecraft.webmagic.Spider#processRequest中只要downloadSuccess为true,就不会走重试的分支。
我之前是 extends us.codecraft.webmagic.downloader.HttpClientDownloader,并us.codecraft.webmagic.Spider.setDownloader(Downloader),修改了us.codecraft.webmagic.downloader.HttpClientDownloader.download(Request, Task)的行为。