我正试图刮一个网站,其中一个表单在POST请求中提交以获取数据。
下面是我正在执行的代码:
from bs4 import BeautifulSoup
import requests
headers = {
'Content-Type':'application/x-www-form-urlencoded',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}
url = 'https://ipindiaservices.gov.in/PublicSearch/PublicationSearch/Search'
with requests.Session() as s:
response = s.get('https://ipindiaservices.gov.in/PublicSearch/PublicationSearch/', headers=headers)
soup = BeautifulSoup(response.content, 'html.parser')
hidden = soup.find_all("input", {'type':'hidden'})
params = {x["name"]: x["value"] for x in hidden}
params['TextField6'] = 'ltd'
response = s.post(url, headers=headers, params=params)
soup = BeautifulSoup(response.content, 'html.parser')
print(response)
我得到500作为post请求的响应值。get请求工作正常,给我的响应为200。不确定在post请求中出现了什么问题。在提交表单时,我正在填充请输入申请人姓名字段为有限公司. 其余字段具有默认值。下面是表单从其中提交的url: https://ipindiaservices.gov.in/PublicSearch/PublicationSearch
我正在更新所有输入字段TextField1 - TextField15到空格,除了TextField6,我传递值为有限公司。另外,我将两个隐藏字段设置为Published和granting,默认值
两个复选框字段也与两个隐藏字段—Published和granting具有相同的名称。不确定这是否是导致问题的原因
<input checked="checked" data-val="true" data-val-required="The Published field is required." id="Published" name="Published" title="Published" type="checkbox" value="true"/>
<input name="Published" type="hidden" value="false"/>
<input data-val="true" data-val-required="The Granted field is required." id="Granted" name="Granted" title="Granted" type="checkbox" value="true"/>
<input name="Granted" type="hidden" value="false"/>
一个500响应代码意味着服务器上有一个未捕获的异常,你真的无能为力。你可以尝试在请求中发送一些值,也许你可以得到一个2xx响应码(或者至少不是500)
我的错,在我之前的代码中有一个打字错误。
response = s.post(url, headers=headers, params=params)
应该
response = s.post(url, headers=headers, data=params)
问题得到解决。请关闭这个