2014-06-06 2 views
2

반환하지 양식에 게시 : 이름의 테이블 아래, 아래에서 http://www.ssa.gov/oact/babynames/#ht=1요청이 나는이 웹 사이트에서 파이썬으로 긁어 싶습니다 생성 된 페이지

을, 세 개의 탭이 있습니다. 태어난 해의 인기 이름 탭 아래에서 양식을 POST하려고합니다.

from bs4 import BeautifulSoup 
import requests 

url = "http://www.ssa.gov/oact/babynames/" 

payload = { 
    'year': 2010, 
    'top': 50 
} 

r = requests.post(url, data=payload) 
# returns status 200 

soup = BeautifulSoup(r.text) 

print soup.prettify() 

이 원본 페이지 만이 아니라 내가 찾고 생성 된 페이지를 반환 :

여기 내 코드입니다.

생성 된 페이지가 반환되지 않는 이유는 무엇일까요?

고맙습니다!

답변

2

POST 요청의 URL을 http://www.ssa.gov/cgi-bin/popularnames.cgi으로 변경해야합니다.

데모 :

>>> from bs4 import BeautifulSoup 
>>> import requests 
>>> url = "http://www.ssa.gov/cgi-bin/popularnames.cgi" 
>>> payload = { 
...  'year': 2010, 
...  'top': 50 
... } 
>>> r = requests.post(url, data=payload) 
>>> soup = BeautifulSoup(r.text) 
>>> table = soup.find('table', summary='Popularity for top 50') 
>>> for row in table.find_all('tr')[1:4]: 
...  print [td.text for td in row.find_all('td')] 
... 
[u'1', u'Jacob', u'Isabella'] 
[u'2', u'Ethan', u'Sophia'] 
[u'3', u'Michael', u'Emma'] 
관련 문제