由于查询字符串,无法从网页检索代码?

时间:2012-12-23 05:48:28

标签: python string scrape

我正在尝试编写一个Python脚本来从网页中检索源代码,该网页的内容取决于查询字符串。具体页面为:http://www.billboard.com/charts/hot-100#/charts/hot-100?begin=1&order=position。这是Billboard Hot 100页面,以10首歌曲为一组,以10页为单位显示Hot 100。您可以控制通过“开始”查询字符串项检索的图表位置,并返回包含“开始”编号的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个位置,所以我认为一种可能性是查询字符串根本没有被考虑在内,这可能表明需要一种不同的方法。

非常感谢您提供的任何帮助!

谢谢! (和节日快乐!)

3 个答案:

答案 0 :(得分:2)

您的代码运行正常。

在浏览器中显示时,您获得的URL数据与网址http://www.billboard.com/charts/hot-100#/charts/hot-100?begin=11&order=position生成的数据相同。

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

试试这段代码,似乎有效:

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

答案 1 :(得分:0)

您是否尝试过浏览器中的http://www.billboard.com/charts/hot-100#/charts/hot-100?begin=11&order=position?您还会获得结果1-10begin似乎必须采用10n + 1形式。

答案 2 :(得分:0)

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

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