码迷,mamicode.com
首页 > 其他好文 > 详细

关于post包参数VIEWSTATE

时间:2018-05-09 17:27:21      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:python   post   

最近遇到个很棘手的问题弄了很久才明白。
网页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

标签:python   post   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!