2014-12-11 42 views
1

我有一個網站的形式,我想,以填補了一些數據和檢索結果檢索結果。填寫表格和使用要求

我能想出的形式ID /類的HTML,但我不知道如何設置的內容,併發送回服務器並檢索結果

我使用Request獲取url和BeautifulSoup,來解析html。

這裏是我到目前爲止有:

import requests 
from bs4 import BeautifulSoup as bs 

def get_form(raw_resp): 
    soup = bs(raw_resp.text) 
    soup = soup.body.find_all('textarea', attrs={'id':'objetos'}) 
    form = soup[0] 
    return getattr(form,'attrs') 

payload = { 
    'object ID': 'SOMEIDHERE', 
    } 

url = 'http://www2.correios.com.br/sistemas/rastreamento/' 

with requests.session() as s: 
    resp = s.get(url) 
    form = get_form(resp) 
    for key,value in form.items(): 
     print "%s = %s"%(key,value) 

輸出:

style = text-transform:uppercase; 
name = objetos 
onblur = this.value=this.value.toUpperCase() 
onkeydown = if (event.keyCode == 13) { this.form.submit(); return false; } 
id = objetos 
class = [u'f8col', u'fldSRO', u'f3row'] 

我想將OBJECT_ID通過這種形式和檢索結果。

回答

1

在考察中瀏覽器的開發者工具的「網絡」選項卡上,你可以看到,你需要做一個POST請求相同的URL提供objetosbtnPesq後參數:

with requests.session() as s: 
    s.get(url) 

    response = s.post('http://www2.correios.com.br/sistemas/rastreamento/resultado.cfm', 
         data={'objetos': payload['object ID'], 
          'btnPesq': 'Buscar'}) 
    print response.content 

作爲一個側面說明,有相關的工具,可以幫助你留上了一個臺階,並提交表格,請參閱:

二者均基於requestsBeautifulSoup

+0

Upvoted使用'requests.session()'。讓OP開始正確的軌道。 – 2014-12-11 04:44:37

+0

你能解釋一下你如何得到'btnPesq:Buscar'嗎? – 2014-12-11 04:52:17

+0

@ f.rodrigues這是你可以留下硬編碼的'objectos'是你應該專注於什麼 - 它應該包含你的'對象ID'。 – alecxe 2014-12-11 04:53:44