admin管理员组文章数量:1794759
利用python批量下载网页文件(url)
#废话不多,直接上手
# -*- coding: utf-8 -*- 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.addheaders = [headers] # 获取网页内容 content = opener.open(url).read().decode('Utf-8') # 构造正则表达式,从content中匹配关键词pattern raw_hrefs = re.findall(pattern, content, 0) # set函数消除重复元素 hset = set(raw_hrefs) # 下载链接 for href in hset: # 之所以if else 是为了区别只有一个链接的特别情况 if (len(hset) > 1): link = url + href[0] filename = os.path.join(Directory, href[0]) print("正在下载", filename) urllib.request.urlretrieve(link, filename) print("成功下载!") else: link = url + href filename = os.path.join(Directory, href) print("正在下载", filename) urllib.request.urlretrieve(link, filename) print("成功下载!") # 无sleep间隔,网站认定这种行为是攻击,反反爬虫 time.sleep(1) 备注python正则表达式:
. 匹配任意1个字符(除了\\n)
[ ] 匹配[ ]中列举的字符
\\d 匹配数字,即0-9
\\D 匹配非数字,即不是数字
\\s 匹配空白,即 空格,tab键
\\S 匹配非空白
\\w 匹配非特殊字符,即a-z、A-Z、0-9、_、汉字
\\W 匹配特殊字符,即非字母、非数字、非汉字、非_
如不懂的,评论区留言~ 实用的化给个赞和关注吧!版权声明:本文标题:利用python批量下载网页文件(url) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686914114a117674.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论