有没有一种方法可以“刷新”请求?

时间:2019-07-19 08:46:49

标签: python html python-requests

我正在尝试使用python请求模块和beautifulsoup4从网站上下载文件,但是问题是您必须等待5秒钟才能出现下载按钮。

我尝试使用requests.get('URL')来获取页面,然后使用beautifulsoup4进行解析以获取下载链接,但是问题是您必须等待5秒钟(如果要使用实际的浏览器)以使按钮出现,因此当我将URL传递到requests.get()时,初始响应对象没有按钮元素,因此我在google上搜索了很多内容,但找不到任何对我有帮助的结果。

有没有一种方法可以“刷新”响应对象?或“等待”?是要在五秒钟后更新其内容,就像使用浏览器打开它一样?

我认为请求模块不可能做到这一点。我该怎么办?

我正在运行Windows10 64x

我是新来的,如果格式不好,抱歉。 :(

2 个答案:

答案 0 :(得分:0)

HTTP是无状态的,每个新请求都与先前的请求不同。我们通常在Cookie,浏览器指令等中实现状态。作为普通的HTTP客户端,requests无法刷新一个请求,下一个请求将是一个完全新的请求。

您正在寻找的是一些了解JavaScript并可以自动处理页面更新的客户端。我建议您看看selenium可以实现浏览器自动化。

答案 1 :(得分:0)

尝试这样的事情,

driver.get("http://somedomain/url_that_delays_loading")
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
   driver.quit()