• VIEWSTATE等参数处理


    网站:https://www.sci99.com/targetprice/
    网站通过点击日历来切换内容,使用Ajax,刷新的数据包只有数据那一块区域。

     

    通过post请求获取日期对应的内容,刚开始只构造selecttime,结果获得的日期还是默认的

    所以还要构造中间几个参数:__VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION。

    __VIEWSTATE这些参数是啥呢,复制了一段话:由于http是无记忆无状态的协议。页面传值给服务器,都是通过form表单,且控件自己必须有name属性与value才可以得到值。但是像显示动态信息很多情况下并不都是使用满足上述条件的控件,所以需要将http伪装为有记忆的。而viewstate就是可以事先这个伪装术的策略。

    虽然不是很明白,反正就是要先得到这几个参数就对了。

    先使用getHiddenvalue()获取三个参数,再放到formData里即可

    def getHiddenvalue():
        request = urllib.request.Request(URL, headers=header)
        reponse = urllib.request.urlopen(request)
        resu = reponse.read()
        page = resu.decode('utf-8')
        vs = re.search(r'<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="(.*?)" />', page)
        vsg = re.search(
            r'<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="(.*?)" />', page)
        ev = re.search(
            r'<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.*?)" />', page)
        html = etree.HTML(page)
        return vs.group(1), vsg.group(1), ev.group(1)

    获取网页函数:

    def getPage(date):
        vs, vsg, ev = getHiddenvalue()
        data = {
            "ScriptManager1": "UpdatePanel1|btn_search",
            "selecttime": date,
            "__VIEWSTATE": vs,
            "__VIEWSTATEGENERATOR": vsg,
            "__EVENTVALIDATION": ev,
            "__ASYNCPOST": "true",
            "btn_search": ""
        }
        formData = urlencode(data)
        page = requests.post(URL, data=formData, headers=header)
        page.encoding = "UTF-8"
        return page.text

     

     

     

  • 相关阅读:
    arc模式和ios的关系
    uitableview置底部,不显示到最顶层
    Mac OS X Lion 10.7.4 升级包
    ObjectiveC urlencode/urldecode url加密解密
    UITableView阴影
    iOS SDK: Working with URL Schemes
    黑苹果mac lion 10.7.3升级10.7.4
    查找 EXC_BAD_ACCESS 问题根源的方法
    "unrecognized selector sent to instance"问题的解决
    测量应用程序cass和cad的使用感受
  • 原文地址:https://www.cnblogs.com/sumuyi/p/12331655.html
Copyright © 2020-2023  润新知