我正在尝试使用JavaScript的requests_html在会话中执行一个requests_html函数(按一下按钮运行)
我知道常规的requests库不支持JavaScript,所以我尝试使用requests_html。
下面是我所拥有的(使用requests):
s = requests.Session()
r = s.post(url)
print(r.text)
r2 = s.post(url2)
print(r2.text)url是指向包含按钮的页面的链接,url2是POST请求链接,按钮的JavaScript函数执行。(在浏览器检查器中,我通过网络选项卡找到了url2,然后单击按钮作为测试)
但是,这不起作用,我是从r2.text那里得到的
<h2>Error(500): An error occurred.</h2>
<p>We are sorry but an unexpected error has occurred on our side while handling your request. In the meantime, please retry your request or try the following:</p>据我理解,错误500意味着问题是服务器端,而不是客户端。但是,在网页上手动单击按钮可以正常工作。
这使我转而尝试直接执行JavaScript函数。我在requests_html文档中找不到任何东西。我也看过硒,但这似乎不是最新的。
还值得一提的是,按钮检查器看起来如下:<button onclick="registerInterest(72833,959320000, '')" type="button" class="btn btn-primary"><i class="far fa-clipboard"></i> Register Interest</button>
因此,本质上,我想在我的第一个POST请求之后执行registerInterest(72833,959320000, '')。
任何帮助都将不胜感激,我将乐意提供任何额外的所需信息。
发布于 2022-06-29 16:39:27
您需要使用Selenium来操作html元素。您可以使用这样的代码:
from selenium import webdriver
#set chromodriver.exe path
driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
#implicit wait
driver.implicitly_wait(0.5)
#maximize browser
driver.maximize_window()
#launch URL
driver.get("https://www.tutorialspoint.com/index.htm")
#identify element
l =driver.find_element_by_xpath("//button[text()='Check it Now']")
#perform click
l.click()
print("Page title is: ")
print(driver.title)
#close browser
driver.quit()只需检查Selenium方法的文档,就可以找到最适合您的方法。
https://stackoverflow.com/questions/72804927
复制相似问题