我正在尝试使用 请求的python lib 在页面中进行抓取,但是我遇到了错误(例如错误的请求或不允许的方法)。
页面有两种形式:一种是get,另一种是post(我希望如此)。我确实使用“数据请求”将值传递到文本字段。
我不想传递用于表单的图像,而只是传递文本字段。
我有六个按钮,每个按钮都有一个不同的值。
<form enctype="multipart/form-data" action="/page1" method="GET"> ... </form>
...
<form enctype="multipart/form-data" action="/page2" method="POST">
<input type="file" name="smiles_file">
<input type="text" name="smiles_str">
...
<button name="pred_type" type="submit" value="adme"> BT1 </button>
<button name="pred_type" type="submit" value="toxicity"> BT2 </button>
</form>
#imports
import requests
from bs4 import BeautifulSoup as bs
#commmon vars
url = 'www.exampleurl.com/site'
hd = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36"
}
dt = {
'smiles_str': 'CC(=O)OC1=CC=CC=C1C(=O)O',
'pred_type': 'adme'
}
#scraping
with requests.Session() as rs:
result = rs.get(url, data=dt, headers=hd)
print ("Code: %s\nHTML\n%s" % (result.status_code, result.text))
使用get: status_code:405(方法...) 使用帖子: status_code:400(错误请求)
答案 0 :(得分:0)
在您的示例中,我没有看到对/page1
或/page2
的引用,但是rs.get
应该使用命名参数params
而不是{{1 }},并且应该与第一个表单URL对应,而对于第二个表单URL,您需要使用data
方法,在这种情况下可以使用数据。
答案 1 :(得分:0)
我想我找到了答案。硒似乎不适用于具有js背景的页面。我正在使用硒,但没有任何问题。