2017-01-13 38 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都會讓我回到TOS URL。幫幫我!!

回答

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 
相關問題