linux下这么慢? python 的requests和urllib2在 Linux下抓取网页怎么这么慢!
同样的python程序,用urllib2 在win xp和linux下抓取指定网页。发现两个系统下所用时间差别好大。
在winodows xp一下子就打印出抓取的内容了。为什么在ubuntu 试了一遍,发现时间要很久才返回?
用requests 也是同样的效果。本人在ubuntu下用chrome 30 打开同样网页,那速度可是飞快的。
下面是requests 的测试代码:
import requests r = requests.get('http://www.soso.com/q?pid=s.idx&cid=s.idx.se&w=ubuntu-12.04-server-i386.iso+site%3Apan.baidu.com') print r.text
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
人品!
把域名配置到hosts中。
用wireshark分析发现,有1/8左右的时间是花在DNS查询上。
你用wireshark抓包分析一下,就知道DNS请求和WEB请求分别占用多少时间了
www.soso.com换成IP地址看看
Linux系统默认不配置DNS缓存的,而chrome则自带DNS缓存
www.soso.com换成IP地址看看
Linux系统默认不配置DNS缓存的,而chrome则自带DNS缓存
www.soso.com换成IP地址看看
Linux系统默认不配置DNS缓存的,而chrome则自带DNS缓存
python 的 httpcache 库,对此问题可能有帮助。
https://devcenter.heroku.com/articles/increasing-application-performance-with-http-cache-headers 这篇文章 解释了http cache的原理。而浏览器一般都具备http cache机制。对于一个应用会话内的多个请求可能有cache效果。
应该不是的,因为同样在这个ubuntu下用chrome访问同样的url,速度就很快。
是不是你dns解析的问题。dns解析比较慢
soso.com 和 IP 添加到/etc/hosts 后,速度提升不大。
后来又测试了抓取 baidu网页,进行对比。发现即使没在hosts中添加baidu,即使在host中添加了 soso, 抓取结果返回的速度,还是百度快N倍。soso依然很慢。
测试代码:
@jobet @Mallon
但有个矛盾:chrome30浏览器中 就是感觉两个网页都很快。。。
大家可以自己体验一下这个效果