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

2024-09-30 04:27:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我的第一个问题是堆栈溢出!你知道吗

我想下载一个招聘网站的简历。我找到了导致下载的链接,但这些下载有一个“.php”结尾,因此我不知道将要下载的文件的扩展名(.doc,.docx,.pdf)链接的最后一个相关部分如下所示:(“~/resumedownload.php?f=WFeilbBZWg==”)

我正在用mechanize登录这个网站。我使用mechanize登录网站,下载文件的步骤如下:

filename = br.retrieve(link.get('href'),
os.path.expanduser("~/Desktop/Job Postings/Hirist/" + str(i) +
".pdf"))[0]

,但这只会带回.pdf文件并破坏其余文件。filename变量是一个.php文件。你知道吗

有什么建议吗?你知道吗


Tags: 文件brdocpdf堆栈网站链接结尾
1条回答
网友
1楼 · 发布于 2024-09-30 04:27:45

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))

相关问题 更多 >

    热门问题