需要有关如何加速网络刮刀的建议

时间:2015-05-07 17:26:10

标签: python web-scraping request beautifulsoup

我还是很陌生。我试图从网页中提取数据,但我实施的这种方法看起来有点慢。我使用时间模块来缩小滞后的原因。

requests.get(url)

大部分时间(1-5秒)

soup = BeautifulSoup(data.content)

持续约0.15秒

请求总是这么慢吗?问题是雅虎率限制来自他们服务器的请求吗?现在需要大约2-5秒来从yahoo.com/finance提取单一股票价格并且请求是主要问题,任何想法?

2 个答案:

答案 0 :(得分:3)

问题不在于Reqeusts。如果它很慢,则可能是您的网络连接问题。正如你正确指出的那样,也可能是雅虎的速率限制请求。每个网站都有一个robots.txt文件,详细说明了有关网络抓取工具及其自动访问权限的政策。 它不应该花这么长时间,但我会把它归结为互联网速度问题。尝试从浏览器访问该URL并检查加载所需的时间。

GET请求是您希望从网站“获取”网页时发送网站的内容。当您在浏览器中输入URL并按Enter键时,将使用相同的GET。因此,除非获取页面所需的时间与浏览器获取页面所需的时间之间存在显着差异,否则互联网连接速度本身就会出现问题。

答案 1 :(得分:3)

只是添加Meghdeep所说的......

如果您按顺序提取多个网址,则应尝试将代码重写为异步。刮一页所花费的时间不会改变,但是异步你可以一次刮掉很多页面。 (你可以使用Python Twisted或Tornado框架......或者你可以用Node.js重写你的刮刀)