【问题标题】:Python Requests: Accepting a TOS before accessing a pagePython 请求:在访问页面之前接受 TOS
【发布时间】:2017-01-13 19:16:11
【问题描述】:

我是一个新手,试图编写一个 python 脚本来从网站上抓取一些信息。我需要进入网站的搜索页面,但在新会话中,它会将您重定向到 TOS 接受页面。您单击是或否接受,然后它会将您移动到搜索页面。这是我的代码:

import requests

s=requests.Session()
page = s.get("http://probate.cuyahogacounty.us/pa/CaseSearch.aspx")
if ('TOS.aspx' in page.url):
    print("Attempt to agree to TOS")
    yesBtn={'ctl00$mpContentPH$btnYes': 'Yes'}
    r=s.post(page.url, data=yesBtn)
    r2=s.get("http://probate.cuyahogacounty.us/pa/CaseSearch.aspx")
    print (r.url)
    print (r2.url)

r 和 r2 都将我踢回 TOS URL。救命!!

【问题讨论】:

    标签: python python-3.x session python-requests


    【解决方案1】:

    这种网站需要一个 cookiejar 或一些“对象”来存储会话。

    试试这个。

    import requests
    import lxml.html
    
    
    base_url = 'http://probate.cuyahogacounty.us'
    with requests.Session() as s:
    
        url = base_url + '/pa/CaseSearch.aspx'
        resp = s.get(url,allow_redirects=False)
        url_tos = base_url + resp.headers['Location']
    
        resp = s.get(url_tos)
        root = lxml.html.fromstring(resp.text)
    
        vgenerator = root.xpath('//*[@id="__VIEWSTATEGENERATOR"]//@value')[0]
        viewstate = root.xpath('//*[@id="__VIEWSTATE"]//@value')[0]
    
        eventvalidation = root.xpath('//*[@id="__EVENTVALIDATION"]//@value')[0]
    
        data = {
          'ajax_HiddenField': '',
          '__EVENTTARGET': '',
          '__EVENTARGUMENT': '',
          '__VIEWSTATE': viewstate,
          '__VIEWSTATEGENERATOR': vgenerator,
          '__EVENTVALIDATION': eventvalidation,
          'ctl00$mpContentPH$btnYes': 'Yes'
        }
    
        r = s.post(url_tos,data=data)
    
        print r.text
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多