2017-01-13 2 views
1

Я новичок, пытающийся написать скрипт 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 верните меня к URL-адресу TOS. Помогите!!

ответ

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