【发布时间】:2015-12-13 15:10:02
【问题描述】:
我想做的是构建一个简单的爬虫来帮助我从 Ultimate-Guitar 下载吉他谱。我可以为它提供一个乐队的 URL,它会抓取所有列为“Guitar Pro”标签的标签的链接。
典型的链接如下所示:
https://tabs.ultimate-guitar.com/a/agalloch/you_were_but_a_ghost_in_my_arms_guitar_pro.htm
我可以用这个链接做的是使用以下代码找到 tab_id:
for tabid in tab.findAll("input", {"type" : "hidden", "name" : "id", "id" : "tab_id"}):
tabID = tabid.get("value")
我想要做的是使用它来建立一个指向实际下载的链接。我遇到问题的地方就在这里。我可以建立的最佳链接如下所示:
请注意,该 URL 末尾的 id 是我之前提到的 tab_id。
如果输入到浏览器中,此链接将立即导致下载。我遇到的问题是我找不到任何方法来生成依赖于实际文件名的链接。此文件名应类似于 [此处的歌曲名称].gp5。其他可接受的文件类型可能是 .gpx、.gp4 和 .gp3。
我想做的是获取实际的文件名,以便我可以正确保存文件(如果下载被命名为诸如 ID 之类的垃圾文件,这对我没有帮助,因为这对我来说是一个无用的文件名,而且我显然需要适当的扩展)。有什么方法可以获取上面的链接并正确初始化下载,或者我可能不走运?我确信有一种方法可以做我需要的,我只是没有足够的经验来处理这种事情。我对请求和诸如此类的东西一无所知,所以也许可以通过这个 URL 提供一些东西并获得下载作为回报?
注意:如果很难获得实际的文件名和扩展名,我确实有解决方法的想法,但我显然至少需要适当的扩展名。
【问题讨论】:
-
当您在下载链接上发出 HEAD 请求而不是 GET 请求时,您会得到有用的信息吗?
-
你检查过这个问题吗? stackoverflow.com/questions/13137817/…
标签: python beautifulsoup web-crawler python-requests