请求在表单上发布不返回生成的页面

时间:2014-06-06 17:34:42

标签: python web-scraping beautifulsoup python-requests

我想从这个网站上搜索python:http://www.ssa.gov/oact/babynames/#ht=1

在底部的名称表下,有三个标签。我希望在“按出生年度受欢迎的名字”选项卡下的表格中张贴。

这是我的代码:

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()

这只返回原始页面,而不是我正在寻找的生成页面。

可能是因为它没有返回生成的页面?

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要将POST请求的网址更改为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']