Python请求:在访问页面之前接受TOS

时间:2017-01-13 19:16:12

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

我是一个新手试图编写一个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网址。帮助!

1 个答案:

答案 0 :(得分:0)

这种网站需要一个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