您好,我有这个简单的 html 选择选项:
<select name="dnn$ctr6707$TimeTableView$ClassesList" id="dnn_ctr6707_TimeTableView_ClassesList" class="HeaderClasses">
<option selected="selected" value="14">ז1ש</option>
<option value="15">ז2ש</option>
<option value="16">ז3ש</option>
<option value="17">ז4ש</option>
<option value="49">ז5ש</option>
<option value="60">ז6ש</option>
<option value="24">ז7ש</option>
<option value="1">ז8ד</option>
<option value="2">ז9ד</option>
<option value="3">ז10ד</option>
<option value="4">ז11ד</option>
<option value="5">ח1ד</option>
<option value="6">ח2ד</option>
<option value="7">ח3ד</option>
<option value="8">ח4ד</option>
<option value="999">ח5ד</option>
<option value="18">ח6ש</option>
<option value="19">ח7ש</option>
<option value="20">ח8ש</option>
</select></td>
表的表单数据是“”dnn$ctr6707$TimeTableView$ClassesList””但是当我请求它时,类表的值不会改变它保持在14。这是网站,如果你想尝试:http://tikah.iscool.co.il/default.aspx如果您能向我提供更改值或解释的 get 请求(最好使用代码),我将不胜感激!谢谢!
这是我的代码:
def main():
dat = {
'__EVENTTARGET': 'dnn_ctr6707_TimeTableView_TdChangesTable',
'__VIEWSTATEGENERATOR': 'CA0B0334',
'dnn$ctr6707$TimeTableView$ClassesList': 42,
'dnn$ctr6707$TimeTableView$ControlId': 2
}
responde = requests.get('http://tikah.iscool.co.il/default.aspx', data=dat)
这让我得到一个 200 的状态代码,所以我假设你可以从那里获得你需要的任何信息。
import requests
from bs4 import BeautifulSoup as bs
url=r'http://tikah.iscool.co.il/default.aspx'
s=requests.Session()
r=s.get(url)
soup=bs(r.text,'html.parser')
dataload={
'__EVENTTARGET': 'dnn$ctr6707$TimeTableView$ClassesList',
'__EVENTARGUMENT': '',
'__LASTFOCUS': '',
'__VIEWSTATE': soup.find('input',{'id':'__VIEWSTATE'}).attrs['value'],
'__VIEWSTATEGENERATOR': soup.find('input',{'id':'__VIEWSTATEGENERATOR'}).attrs['value'],
'dnn$ctr6707$TimeTableView$ClassesList': '42',
'dnn$ctr6707$TimeTableView$ControlId': '',
'ScrollTop':'' ,
'__dnnVariable': ''
}
headers={
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9',
'cache-control': 'max-age=0',
'content-length': '3278',
'Host': 'tikah.iscool.co.il',
'Origin': 'http://tikah.iscool.co.il',
'Referer': 'http://tikah.iscool.co.il/default.aspx',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'
}
r=s.post(r.url,headers=headers,data=dataload)
print(r.status_code)
解释:
当我检查发布请求时,我看到有一些参数被传递,这些参数对于每个浏览会话都是唯一的(在这种情况下是 __VIEWSTATE 和 __VIEWSTATEGENERATOR)。所以这些值必须来自某个地方。我检查了页面中的元素并找到了这样的隐藏输入
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUIMjU3MTQzOTcPZBYGZg8WAh4EVGV4dAU+PCF........
那么这只是使用 BeautifulSoup 解析“值”属性并将其放入我的dataload
字典中的问题。如果您以前没有使用过 BS,我建议您阅读此处的文档
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句