首页 > 其他 > 详细

关于post包参数VIEWSTATE

时间:2018-05-09 17:23:00      阅读:293      评论:0      收藏:0      [点我收藏+]
最近遇到个很棘手的问题弄了很久才明白。
网页http://www.hkexnews.hk/sdw/search/mutualmarket_c.aspx
我想获取里面的资料,但是需要选取一个日期,那么意味着我需要发送一个post包给此页面。
从而发现了2个随机参数:VIEWSTATE、EVENTVALIDATION

具体解决办法如下:
def get_hiddenvalue(url):
request=urllib.request.Request(url)
reponse=urllib.request.urlopen(request)
resu=reponse.read()
html = resu.decode(‘utf-8‘) # python3
VIEWSTATE =re.findall(r‘<input type="hidden" name="VIEWSTATE" id="VIEWSTATE" value="(.?)" />‘, html,re.I)
EVENTVALIDATION =re.findall(r‘<input type="hidden" name="EVENTVALIDATION" id="EVENTVALIDATION" value="(.
?)" />‘, html,re.I)
return VIEWSTATE[0],EVENTVALIDATION[0]

编写函数先访问一次网页。随后获取该值之后再发送post包 。解决!

全部源码如下:
import requests
import urllib.request
import re
NIAN = ‘2017‘
YUE = ‘12‘
RI = ‘30‘
url = ‘http://www.hkexnews.hk/sdw/search/mutualmarket_c.aspx
def get_hiddenvalue(url):
request=urllib.request.Request(url)
reponse=urllib.request.urlopen(request)
resu=reponse.read()
html = resu.decode(‘utf-8‘) # python3
VIEWSTATE =re.findall(r‘<input type="hidden" name="VIEWSTATE" id="VIEWSTATE" value="(.?)" />‘, html,re.I)
EVENTVALIDATION =re.findall(r‘<input type="hidden" name="EVENTVALIDATION" id="EVENTVALIDATION" value="(.
?)" />‘, html,re.I)
return VIEWSTATE[0],EVENTVALIDATION[0]
VIEWSTATE, EVENTVALIDATION=get_hiddenvalue(url)
data = {
EVENTVALIDATION‘:EVENTVALIDATION,
VIEWSTATE‘:VIEWSTATE,
‘__VIEWSTATEGENERATOR‘:‘EC4ACD6F‘,
‘btnSearch.x‘:‘23‘,
‘btnSearch.y‘:‘12‘,
‘ddShareholdingDay‘:NIAN,
‘ddShareholdingMonth‘:YUE,
‘ddShareholdingYear‘:RI,
‘today‘:‘20180509‘
}
html_post = requests.post(url, data=data)
print(html_post.text)

关于post包参数VIEWSTATE

原文:http://blog.51cto.com/12541359/2114511

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!