0

我正在尝试编写一个 Python 脚本来从其内容取决于查询字符串的网页中检索源代码。具体页面为:http ://www.billboard.com/charts/hot-100#/charts/hot-100?begin=1&order=position 。这是 Billboard Hot 100 页面,它以 10 页、10 首歌曲为一组显示 Hot 100。您控制通过“begin”查询字符串项检索的图表位置,并返回包括“begin”编号在内的10首歌曲。基本上,我想使用 Windows Scheduler 自动运行每周检索 10 页的脚本。我不喜欢用 Python 来做这件事。

我使用了以下脚本,它检索看似第一页的内容(位置 1 - 10)。

import urllib
urllib.urlretrieve("http://www.billboard.com/charts/hot-100#/charts/hot-100?begin=1&order=position",r'C:\g\filename.txt')

但是,当我将“开始”值更改为 11 时,它仍然检索 1 - 10。也许网页以某种方式不允许脚本执行这样的操作?如果我输入没有查询字符串的 URL,它也会返回前 10 个位置,所以我认为一种可能性是根本没有考虑查询字符串,这可能表明需要一种不同的方法。

您能提供的任何帮助将不胜感激!

谢谢!(节日快乐!)

4

3 回答 3

2

您的代码运行良好。

当在浏览器中给出URL http://www.billboard.com/charts/hot-100#/charts/hot-100?begin=11&order=position时,您将获得相同的 HTML 数据。

这意味着,从 11 到 20 检索条目的代码是异步请求,如 AJAX。

试试这个代码,它似乎工作:

import urllib
urllib.urlretrieve("http://www.billboard.com/charts/hot-100?begin=11&order=position",r'C:\g\filename.txt')
于 2012-12-23T06:06:24.387 回答
0

仔细查看那个 URL,你会注意到它的一半实际上是片段的一部分(甚至没有正常发送到服务器)。他们可能正在使用 AJAX 来解析并显示相关数据。

这似乎按预期工作: http: //www.billboard.com/charts/hot-100?begin=21&order=position

于 2012-12-23T05:56:43.263 回答
0

您是否尝试过http://www.billboard.com/charts/hot-100#/charts/hot-100?begin=11&order=position在浏览器中访问?你也会得到结果1-10。看起来很可能begin必须是形式10n + 1

于 2012-12-23T05:51:25.357 回答