我写了一个python程序从互联网上下载一个文件:
url = "http://download2163.mediafire.com/icum151v51zg/55rll9s5ioshz5n/Alcohol52_FE_2-0-3-6850.exe"
file_name ='file'
u = urllib2.urlopen(url)
f = open(file_name, 'wb')
buffer = u.read()
f.write(buffer)
f.close()
而且工作正常。问题是在这个程序中,用来下载文件的链接不是很昂贵! 我想下载的文件是用mediafire上传的。 我发现这个页面的链接(http://www.mediafire.com/download/55rll9s5ioshz5n/Alcohol52_FE_2-0-3-6850.exe)是共价的,在这个页面上我找到了我放在程序中的链接。事实上,我用鼠标右键点击“下载(6.77MB)”按钮并选择“获得这个链接”,我就获得了我在程序中使用的直接链接:http://download2163.mediafire.com/icum151v51zg/55rll9s5ioshz5n/Alcohol52_FE_2-0-3-6850.exe
但是第二个直接链接-这是我真正需要的直接链接-是可变的!在
我找到了获得这个变量和重要的直接链接的方法:使用第一个和共有链接(http://www.mediafire.com/download/55rll9s5ioshz5n/Alcohol52_FE_2-0-3-6850.exe)我下载了HTML页面,在这个HTML文件中我找到了我需要的直接链接!在
问题是:有时当我的python程序试图下载HTML页面时,它会下载包含直接链接的正确页面,但有时它会下载错误的页面,带有验证码!所以不能建立直接联系。在
我正在寻找一种方法来避免这个验证码,并确保我的python程序总是下载正确的HTML页面,里面有直接链接!在
有什么建议吗?在
如果没有办法的话,有人知道我如何获得一个文件的直接链接,我想上传到互联网上,我想下载我的python程序?在
您需要在页面中查找可以用来始终标识链接的内容。例如,download链接位于类为“download link”的div元素中。您可以解析该div的HTML,然后从它的子元素获取链接。还有其他的可能性。例如,您可以在感兴趣的URL中查找某个唯一的常量,并在从页面获取所有链接后使用正则表达式进行选择。在
我强烈建议您查看beauthoulsoup库,它将允许您轻松解析HTML。在
编辑: 好吧,我没有注意到这一点,因为我最初在浏览器中查看页面,但显然mediafire只在页面加载后用javascript填充下载div,这使得获取链接变得更加困难。谢天谢地,他们仍然需要包含下载链接,并使用一个丑陋、可怕的小黑客,我们可以抓住它:
首先,您需要以下URL的正则表达式:http://daringfireball.net/2010/07/improved_regex_for_matching_urls
然后抓取页面内容并用beautifulsoup进行如下解析:
以下是我的全部工作代码:
^{2}$相关问题 更多 >
编程相关推荐