
爬虫下载附件的问题:附件下载不下来
问题描述
使用提供的爬虫代码爬取政府网站的附件时,无法下载附件。
代码分析
def download(filename, url, path):
"""
下载附件
"""
try:
print('下载中,请耐心等待...')
r = requests.get(url)
with open(path + filename, "wb") as file:
file.write(r.content)
print(filename, '下载ok')
except:
print(filename, '下载失败')解决方案
从代码中可以看出,下载附件的功能已经实现。问题原因可能不在于代码,而是其他方面:
- 目标网站的反爬虫机制:政府网站可能采取了反爬虫措施,限制了附件下载。
- 网络连接问题:检查网络连接状态,确保可以正常访问目标网站。
- 文件名和路径错误:检查指定的附件文件名和保存路径是否有误。
- 附件网址错误:确保从目标页面提取到的附件网址是正确的。
优化建议
即使解决了附件下载问题,代码仍有优化空间:
- 使用 contextlib.closing() 自动关闭文件:使用 with 语句时,可以考虑使用 contextlib.closing() 自动关闭文件,避免异常处理时的文件资源泄漏。
优化后的代码
import contextlib
def download(fileName, url, path):
"""
下载附件
"""
try:
print('下载中,请耐心等待...')
with contextlib.closing(requests.get(url, stream=True)) as r:
with contextlib.closing(open(path + fileName, "wb")) as File:
File.write(r.content)
print(fileName, '下载Ok')
except:
print(fileName, '下载失败')










