import requests
headers ={
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"en-US,en;q=0.5",
"Connection":"keep-alive",
"Host":"mcfbd.com",
"Referer":"https://mcfbd.com/mcf/FrmView_PropertyTaxStatus.aspx",
"User-Agent":"Mozilla/5.0(Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"}
a = requests.session()
soup = BeautifulSoup(a.get("https://mcfbd.com/mcf/FrmView_PropertyTaxStatus.aspx").content)
payload = {"ctl00$ContentPlaceHolder1$txtSearchHouse":"",
"ctl00$ContentPlaceHolder1$txtSearchSector":"",
"ctl00$ContentPlaceHolder1$txtPropertyID":"",
"ctl00$ContentPlaceHolder1$txtownername":"",
"ctl00$ContentPlaceHolder1$ddlZone":"1",
"ctl00$ContentPlaceHolder1$ddlSector":"2",
"ctl00$ContentPlaceHolder1$ddlBlock":"2",
"ctl00$ContentPlaceHolder1$btnFind":"Search",
"__VIEWSTATE":soup.find('input',{'id':'__VIEWSTATE'})["value"],
"__VIEWSTATEGENERATOR":"14039419",
"__EVENTVALIDATION":soup.find("input",{"name":"__EVENTVALIDATION"})["value"],
"__SCROLLPOSITIONX":"0",
"__SCROLLPOSITIONY":"0"}
b = a.post("https://mcfbd.com/mcf/FrmView_PropertyTaxStatus.aspx",headers = headers,data = payload).text
print(b)
以上是我的代码为这个网站。在
^{pr2}$我检查了firebug,这些是表单数据的值。 但是这样做:
b = requests.post("https://mcfbd.com/mcf/FrmView_PropertyTaxStatus.aspx",headers = headers,data = payload).text
print(b)
引发此错误:
[ArgumentException]: Invalid postback or callback argument
我对通过请求提交表格的理解是否正确?在
1.打开firebug
2.提交表单
3.转到“网络”选项卡
4.在“网络”选项卡上选择“发布”选项卡
5.像上面的代码一样复制表单数据
我一直想知道怎么做。我可以使用selenium,但我想我应该尝试一些新的东西并使用请求
您收到的错误是正确的,因为像VIEWSTATE这样的字段(以及其他字段)不是静态的或硬编码的。正确的方法如下:
创建请求会话对象。另外,建议使用包含USER-AGENT字符串的头来更新它-
导航到指定的url-
^{pr2}$使用BeautifulSoup4解析返回的html-
使用硬编码值和动态值填充formdata-
然后使用session对象本身发送POST请求-
相关问题 更多 >
编程相关推荐