gpt4 book ai didi

python - urllib 中 http ://www. ssa.gov/cgi-bin/popularnames.cgi 的(大概是基本的)网络抓取

转载 作者:太空狗 更新时间:2023-10-29 22:09:40 26 4
gpt4 key购买 nike

我对 Python(和网络抓取)还很陌生。让我问你一个问题。

许多网站实际上并没有报告其在 Firefox 或其他浏览器中的特定 URL。例如,Social Security Admin 显示了流行的婴儿名字和排名(自 1880 年以来),但是当我将年份从 1880 更改为 1881 时,url 并没有改变。它是不断的,

http://www.ssa.gov/cgi-bin/popularnames.cgi

因为不知 Prop 体的URL,无法使用urllib下载网页。

在这个页面源码中,包括:

<input type="text" name="year" id="yob" size="4" value="1880">

所以大概,如果我能控制这个“年份”值(比如“1881”或“1991”),我就能解决这个问题。我对吗?我仍然不知道该怎么做。

谁能告诉我这个问题的解决方案?

如果你知道一些可以帮助我学习的网站,请告诉我。

谢谢!

最佳答案

您仍然可以使用 urllib。该按钮对当前 url 执行 POST。使用 Firefox 的 Firebug我查看了网络流量,发现它们发送了 3 个参数:membertopyear。您可以发送相同的参数:

import urllib
url = 'http://www.ssa.gov/cgi-bin/popularnames.cgi'

post_params = { # member was blank, so I'm excluding it.
'top' : '25',
'year' : year
}
post_args = urllib.urlencode(post_params)

现在,只需发送 url 编码的参数:

urllib.urlopen(url, post_args)

如果您还需要发送 header :

headers = {
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' : 'en-US,en;q=0.5',
'Connection' : 'keep-alive',
'Host' : 'www.ssa.gov',
'Referer' : 'http://www.ssa.gov/cgi-bin/popularnames.cgi',
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0'
}

# With POST data:
urllib.urlopen(url, post_args, headers)

循环执行代码:

for year in xrange(1880, 2014):
# The above code...

关于python - urllib 中 http ://www. ssa.gov/cgi-bin/popularnames.cgi 的(大概是基本的)网络抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17220997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com