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



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

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

最新更新