【发布时间】:2017-10-04 05:13:15
【问题描述】:
目前正在和其他学生一起上网络爬虫课程,我们应该向一个虚拟站点发出“获取”请求,对其进行解析,然后访问另一个站点。
问题是,虚拟站点的内容只上线了几分钟就消失了,内容每隔一段时间就会重新上线。在内容可用期间,每个人都试图发出“获取”请求,所以我的只是挂起,直到每个人都清理干净,内容最终消失。所以我最终无法成功发出“获取”请求:
import requests
from splinter import Browser
browser = Browser('chrome')
# Hangs here
requests.get('http://dummysite.ca').text
# Even if get is successful hangs here as well
browser.visit(parsed_url)
所以我的问题是,在我得到响应之前发出无休止的并发“获取”请求的最快/最佳方式是什么?
【问题讨论】:
-
您的请求的“速度”不是问题。问题似乎与服务器的响应能力(或缺乏响应能力)有关。在我看来,你无法可靠地赢得比赛,这取决于你和服务器之间的其他因素。充其量,您可以尝试发送许多并发请求,例如每秒左右,以提高您的机会。不过老实说,我认为这样的服务器没有理由不能同时处理班级中所有学生的请求,除非它是设计使然,或者服务器没有所需的资源或配置错误。
-
@sytech 感谢您的洞察力和回应。如果是这种情况,您介意展示如何按照建议发送许多并发请求吗?不妨试一试,这样我也可以投票/接受答案。
-
@sytech 检查您是否看过我之前的回复。提前谢谢!
-
这有点开箱即用,但是游说其他学生停止对资源严重不足的玩具服务器进行 DDoS 攻击,设置 Amazon Lambda(或类似)例程以偶尔复制其数据到无法处理流量的其他地方,然后点击 that?
标签: python python-2.7 browser python-requests splinter