2017-01-13 11 views
1

私は、Webサイトからいくつかの情報をスクラップするための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

この種のウェブサイトでは、セッションを保存するためにクッキージャーまたは何らかの「オブジェクト」が必要です。

これを試してください。

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 
関連する問題