2014-11-08 1 views
0

데이터를 올바른 형식으로 게시하기 위해 키가 무엇이고 값이 무엇인지 알아 내려고하고 있습니다. 제 의견으로는, 메소드를 가지는 html 태그의 ID가 열쇠라고 생각합니다. 텍스트 상자에 입력 한 텍스트는 값이어야합니다.파이썬 요청 라이브러리를 사용하여 데이터를 검색 상자에 게시합니다.

<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

0

시도, 당신들 감사? 귀하의 URL에. 그런 다음 'searchbox_form form man'을 'searchbox_form'으로 변경하십시오. 내가 그 일을 있다고 생각

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

:

귀하의 요청은 모양을 객체.

? URL 끝에있는 표시는 URL에 검색어 문자열을 전송 중임을 나타냅니다. 양식 데이터를 게시 중이므로 게시물의 데이터 사전 (data = {})이 쿼리 문자열을 추가로 처리합니다.

+0

아니요 작동하지 않습니다 ... 자신의 컴퓨터에서 사용해 볼 수 있습니까? 나는 매우 감사한다 – MacSanhe

+0

좋아. 그래서 Chrome dev 도구를 열어 요청을 보내는 방법을 확인해야했습니다. 검색을 클릭하면 요청한 URL은 http://www.trulia.com/submit_search/?display=for_sale&search="ZIP_CODE_I_USED_FOR_SEARCH "및 자동으로 채워진 다른 검색어입니다. Inspect를 통해 페이지를 검색하면 요소, 당신은 action = "/ submit_search /"인 id = "global_nav_searchbox"가 있음을 알 수 있습니다. 나는 당신이 queries.post ("http://www.trulia.com/submit_search/", 데이터 = { "검색": "당신의 검색 인수"})로 쿼리를 변경한다면 그것은 효과가있을 것이라고 생각하십니까? – Anthony

관련 문제