我想从这个网站上搜索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()
这只返回原始页面,而不是我正在寻找的生成页面。
可能是因为它没有返回生成的页面?
谢谢!
答案 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']