gpt4 book ai didi

python - 带有 mechanicalsoup 的表单请求未显示预期结果

转载 作者:可可西里 更新时间:2023-11-01 16:35:54 24 4
gpt4 key购买 nike

我是网络抓取和一般网络事物方面的新手(但对 Python 非常熟悉),我想了解如何将网站搜索集成到生物信息学研究工具中。

目标:检索 http://www.lovd.nl/3.0/search 上的表单输出

import mechanicalsoup

# Connect to LOVD
browser = mechanicalsoup.StatefulBrowser()
browser.open("http://www.lovd.nl/3.0/search")

# Fill-in the search form
browser.select_form('#websitevariantsearch')
browser["variant"] = "chr15:g.40699840C>T"
browser.submit_selected()

# Display the results
print(browser.get_current_page())

在输出中,我得到了完全相同的页面 ( http://www.lovd.nl/3.0/search )。我尝试了标准请求,但出现了另一种错误:

from requests import get, Session

url="http://www.lovd.nl/3.0/search"
formurl = "http://www.lovd.nl/3.0/ajax/search_variant.php"
client = Session()

#get the csrf
soup = BeautifulSoup(client.get(url).text, "html.parser")
csrf = soup.select('form input[name="csrf_token"]')[0]['value']

form_data = {
"search": "",
"csrf_token": csrf,
"build": "hg19",
"variant": "chr15:g.40699840C>T"
}

response = get(formurl, data=form_data)
html=response.content
return html

...这只返回一个

alert("Error while sending data.");

form_data 字段取自 XHR 请求(来自 developer -> network 选项卡)。

我可以看到数据是通过 ajax 异步发送的,但我不明白这些信息的实际含义。

需要一些指导

最佳答案

MechanicalSoup 不执行 JavaScript。您尝试浏览的网站有:

<form id="websitevariantsearch"
action=""
onsubmit="if ...">

没有传统 HTML 表单意义上的操作,但有一段在提交时执行的 JavaScript。 MechanicalSoup 在这里无济于事。 Selenium 可能有效:http://mechanicalsoup.readthedocs.io/en/stable/faq.html#how-does-mechanicalsoup-compare-to-the-alternatives

关于python - 带有 mechanicalsoup 的表单请求未显示预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50628120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com