温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

用python爬虫下载链接的方法

发布时间:2020-11-30 09:35:48 来源:亿速云 阅读:649 作者:小新 栏目:编程语言

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

步骤

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爬虫下载链接的方法有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI