2014-11-08 85 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