首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python JavaScript requests_html执行requests_html函数

使用Python JavaScript requests_html执行requests_html函数
EN

Stack Overflow用户
提问于 2022-06-29 16:32:39
回答 1查看 140关注 0票数 -2

我正在尝试使用JavaScript的requests_html在会话中执行一个requests_html函数(按一下按钮运行)

我知道常规的requests库不支持JavaScript,所以我尝试使用requests_html

下面是我所拥有的(使用requests):

代码语言:javascript
复制
s = requests.Session()
r = s.post(url)
print(r.text)
r2 = s.post(url2)
print(r2.text)

url是指向包含按钮的页面的链接,url2是POST请求链接,按钮的JavaScript函数执行。(在浏览器检查器中,我通过网络选项卡找到了url2,然后单击按钮作为测试)

但是,这不起作用,我是从r2.text那里得到的

代码语言:javascript
复制
<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, '')

任何帮助都将不胜感激,我将乐意提供任何额外的所需信息。

EN

回答 1

Stack Overflow用户

发布于 2022-06-29 16:39:27

您需要使用Selenium来操作html元素。您可以使用这样的代码:

代码语言:javascript
复制
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方法的文档,就可以找到最适合您的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72804927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档