用python爬虫下载链接的方法
小编给大家分享一下用python爬虫下载链接的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

10年积累的成都网站制作、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有东宁免费网站建设让你可以放心的选择与我们合作。
步骤
1、要利用headers拉动请求,模拟成浏览器去访问网站,跳过最简单的反爬虫机制。
2、获取网页内容,保存在一个字符串content中。
3、构造正则表达式,从content中匹配关键词pattern获取下载链接。需要注意的是,网页中的关键词出现了两遍(如下图),所以我们要利用set()函数清除重复元素。
4、第三步是遍历set之后的结果,下载链接。
5、设置time.sleep(t),无sleep间隔的话,网站认定这种行为是攻击,所以我们隔一段时间下载一个,反反爬虫。
具体代码
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('utf8')
# 构造正则表达式,从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)
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
# '(Storm-Data-Export-Format.docx)',
# 'E:\stormevents\csvfiles')
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
# '(Storm-Data-Export-Format.pdf)',
# 'E:\stormevents\csvfiles')
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
# '(StormEvents_details-ftp_v1.0_d(\d*)_c(\d*).csv.gz)',
# 'E:\stormevents\csvfiles')
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
# '(StormEvents_fatalities-ftp_v1.0_d(\d*)_c(\d*).csv.gz)',
# 'E:\stormevents\csvfiles')
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
# '(StormEvents_locations-ftp_v1.0_d(\d*)_c(\d*).csv.gz)',
# 'E:\stormevents\csvfiles')
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/legacy/',
# '(ugc_areas.csv)',
# 'E:\stormevents\csvfiles\legacy')
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
# '(ugc_areas.csv)',
# 'E:\stormevents\csvfiles')看完了这篇文章,相信你对用python爬虫下载链接的方法有了一定的了解,想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
网站题目:用python爬虫下载链接的方法
转载来源:http://www.jxjierui.cn/article/giohjg.html


咨询
建站咨询
