
正文
python爬虫超时重试,python爬虫异常处理
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
优化Python爬虫速度的方法有哪些
使用开源的爬虫库scrapy,原生支持多线程,还可以设定抓取速率,并发线程数等等参数;除此之外,scrapy对爬虫提取HTML内容也有良好的支持。
多进程的话可以高效利用CPU。但是其实多数情况是在网络,所以说更好的解决办法是用多个机房的多台机器同时跑多进程的爬虫,这样减少网络阻塞。实现的话,用scrapy+rq-queue然后用redis来作队列就好。
将网页page source 保存到数据库(mongodb)中,每次取得新的page source 和数据库中的page source 的hash 值是不是想等,如果不等表示有更新。这个判断有了,爬虫爬取时间策略就好办了。
相关问答
Q1: Python爬虫,有没有什么方法能让一次请求时间超长后跳过
在使用Python爬虫时,如果遇到网络不稳定的情况,可以尝试以下方法解决: 设置超时时间:在爬取网页的代码中,可以设置一个合理的超时时间,当请求时间超过设定的时间时,就会抛出异常,可以通过捕获异常进行处理。
打包技术。可以将python文件打包成可执行的exe文件,让其在后台执行即可。其他。比如,使用网速好的网络等等。 反爬虫的措施 限制请求头,即request header。
尽可能减少网站访问次数 单次爬虫的主要把时间消耗在网络请求等待响应上面,所以能减少网站访问就减少网站访问,既减少自身的工作量,也减轻网站的压力,还降低被封的风险。
是为了防止url不可访问,或者响应速度太慢而造成的时间浪费。比如,你要爬取1000个网站,如果有100个需要30s才能返回数据,你等待他们返回的话就需要3000s了,如果你设置10s超时,那么就能知道最长需要多久1000个可以爬完。
Q2: 如何使用python爬虫时增加延时和重试.比如一旦出现500错误,就等待1分...
尽可能减少网站访问次数 单次爬虫的主要把时间消耗在网络请求等待响应上面,所以能减少网站访问就减少网站访问,既减少自身的工作量,也减轻网站的压力,还降低被封的风险。
HTTPError是URLError的子类,在你利用urlopen方法发出一个请求时,服务器上都会对应一个应答对象response,其中它包含一个数字”状态码”。
用twisted进行异步I/O抓取 事实上更高效的抓取并非一定要用多线程,也可以使用异步I/O法:直接用twisted的getPage方法,然后分别加上异步I/O结束时的callback和errback方法即可。
上面这个是Python7之后才能用的写法,低于Python7要这样写:现在我们就可以运行一下看看修改后的代码能不能跑通了。
这种500错误是对方服务器抗不住压力,所以超时或者发生其它错误。和你的程序没有太大关系。
复杂的交互,比如设置“验证码”来阻拦登录。这就比较难做,解决方法1:我们用Selenium去手动输入验证码;方法2:我们用一些图像处理的库自动识别验证码(tesserocr/pytesserart/pillow)。ip限制。
关于python爬虫超时重试和python爬虫异常处理的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






