我对此还是个新手。我正在尝试从网页中提取数据,但我实现的这个方法似乎有点慢。我使用了time模块来缩小延迟的原因。
requests.get(url)花费了大部分时间(1-5秒)
soup = BeautifulSoup(data.content)始终如一地耗时0.15秒
请求总是这么慢吗?雅虎的问题是限制来自他们服务器的请求吗?现在,从yahoo.com/finance上拉出一个股票价格大约需要2-5秒,请求是主要问题,有什么想法吗?
发布于 2015-05-08 01:30:14
问题不在于Reqeusts。如果它很慢,这可能是你的网络连接的问题。正如你正确指出的那样,也可能是雅虎对请求进行了速率限制。每个网站都有一个robots.txt文件,其中详细介绍了他们关于网络刮板的策略和对它们的自动访问。不管怎样,这应该不会花这么长时间,但我会把它归因于网速问题。尝试从浏览器访问URL,并检查加载需要多长时间。
GET请求是当你想从网站“获取”网页时,你发送给他们的请求。当您在浏览器中输入URL并按enter时,将使用相同的GET。因此,除非请求获取页面所需的时间与浏览器获取页面所需的时间之间存在显着差异,否则这是互联网连接速度本身的问题。
发布于 2015-05-08 01:34:34
我只是在补充Meghdeep说的..
如果您按顺序拉取多个urls,则应尝试将代码重写为异步。抓取一个页面所花费的时间不会改变,但是异步地你可以一次抓取多个页面。(您可以使用Python Twisted或Tornado框架来实现this..or,也可以使用Node.js重写您的刮板程序)
https://stackoverflow.com/questions/30107915
复制相似问题