2014-11-08 29 views
0

我想弄明白,爲了將數據發佈到正確的表單,什麼是關鍵,什麼是價值。在我看來,我認爲具有方法得到的html標籤的ID是關鍵。我在文本框中輸入的文本應該是值。使用python請求庫將數據發佈到搜索框

<form id="searchbox_form" class="searchbox_form form man" method="get" action="/submit_search/"  autocomplete="off"> 

所以問題是,我將文本放入搜索框後,如何獲取網頁html? 謝謝各位,這是我的代碼

import requests 
r = requests.post("http://www.trulia.com/homepage.php?", 
        data={'searchbox_form form man':'7420 Westlake Ter #1210 20817'}) 
with open("test.html", "w") as f: 
    f.write(r.text.encode("utf-8")) 

回答

2

表單使用HTTP GET方法提交,提交的url位於表單的action屬性中。所以,你在http://www.trulia.com/submit_search/

提交您的查詢現在你可以接近這個樣子,

from urllib import urlencode 
import requests 
params = {'search': '7420 Westlake Ter #1210 20817'} 
search_url = 'http://www.trulia.com/submit_search/?' 
url = search_url + urlencode(params) 
r = requests.get(url) 
# now you get your desired response. 

您可以使用螢火蟲或開發人員工具查看請求。

+0

對不起,我沒有檢查我的帖子在上週末,你的答案有用。謝謝! – MacSanhe 2014-11-10 21:19:48

0

嘗試刪除?在你的網址。 然後將'searchbox_form form man'更改爲'searchbox_form'。

你的請求對象將是這樣的:

r = requests.post("http://www.trulia.com/homepage.php", data={'searchbox_form': '7420 blahblah'}) 

我認爲這可能會奏效。

The?網址末尾的標記表示您要在網址中提交查詢字符​​串。 由於您發佈了表單數據,因此您的文章中的數據字典(data = {})負責添加查詢字符串。

+0

不,它不工作...你可以嘗試在你自己的機器上?我非常感謝 – MacSanhe 2014-11-08 05:35:17

+0

好的。所以我必須打開Chrome開發工具來查看請求的發送方式。 當我點擊搜索時,請求的URL是http://www.trulia.com/submit_search/?display=for_sale&search="ZIP_CODE_I_USED_FOR_SEARCH「加上自動填充的其他查詢字符串。 如果您通過Inspect頁面進行搜索元素,你會看到有一個id爲「global_nav_searchbox」的action =「/ submit_search /」。我想如果你把你的查詢改爲requests.post(「http://www.trulia.com/submit_search/」,data = {「search」:「你的搜索參數在這裏」)}那麼這可能工作? – Anthony 2014-11-08 05:46:06