大家好,给大家分享一下python登录网站自动下载文件,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!
Source code download: 本文相关源码
获取请求头
手动获取:
点击右键,选择检查,再选择network,刷新一下(ctrl+r),随机选其中一个内容,将 User-Agent 后的内容复制出来就行:
import urllib.request # url request
import re # regular expression
import os # dirs
import time
'''
url 下载网址
pattern 正则化的匹配关键词
Directory 下载目录
'''
def BatchDownload(url, pattern, Directory):
# 拉动请求,模拟成浏览器去访问网站->跳过反爬虫机制
# 在这里,必须使用元组或列表的方式定制请求头。
headers = {'User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
opener = urllib.request.build_opener() #自定义opener,使用build_opener()修改报头
opener.addheaders = [headers] #添加报头
content = opener.open(url).read().decode('utf8') # 获取网页内容
raw_hrefs = re.findall(pattern, content, re.IGNORECASE) # 构造正则表达式,从content中匹配关键词pattern
hset = set(raw_hrefs) # set函数消除重复元素
"""
urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)
url:外部或者本地url
filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据);
reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调