使用Python中的mechanize库在网页上下载带有多个扩展名的文件

时间:2015-07-23 11:09:29

标签: python mechanize urllib

关于Stack Overflow的第一个问题!

我正在尝试下载招聘网站的简历。我找到了导致下载的链接,但是这些下载有一个'.php'结尾,因此我不知道要下载的文件的扩展名(.doc,.docx,.pdf)链接的相关最后一部分看起来像这样:(“〜/ resumedownload.php?f = WFeilbBZWg ==”)

我正在使用mechanize登录网站。我已经使用mechanize登录网站,这就是我下载文件的方法:

A

,但这只会带回.pdf文件并破坏其余文件。 filename变量是.php文件。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

Browser.retrieve()返回一个元组,该文件由写入文件的文件名和远程服务器的标头组成。然后,您可以使用Content-Type标头来确定文件的MIME类型,并使用mimetypes模块来获取文件的适当扩展名。最后,重命名该文件。

import mechanize
import shutil
import os.path
import mimetypes

#url = 'http://stackoverflow.com'
url = 'http://heriverde.nimoz.pl/wp-content/uploads/pdf-sample.pdf'
br = mechanize.Browser()
filename, headers = br.retrieve(url)

dest_dir = os.path.expanduser('~/Desktop/Job Postings/Hirist/')
# Content-Type may include encoding, e.g. text/html; charset=utf-8
content_type = headers.get('Content-Type', '').split(';')[0]
extension = mimetypes.guess_extension(content_type)
if not extension:
    extension = '.dunno'

# `i` is assumed to be a counter
dest_filename = '{}{}'.format(i, extension)
shutil.move(filename, os.path.join(dest_dir, dest_filename))