我正在尝试编写一个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个位置,所以我认为一种可能性是查询字符串根本没有被考虑在内,这可能表明需要一种不同的方法。
非常感谢您提供的任何帮助!
谢谢! (和节日快乐!)
答案 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-10
。 begin
似乎必须采用10n + 1
形式。
答案 2 :(得分:0)
仔细查看该URL,您会发现其中一半实际上是片段的一部分(甚至没有正常发送到服务器)。他们可能正在使用AJAX来解析它并显示相关数据。
这似乎按预期工作: http://www.billboard.com/charts/hot-100?begin=21&order=position