用python爬虫下载链接的方法

  介绍

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

步骤

1,要利用头拉动请求,模拟成浏览器去访问网站,跳过最简单的反爬虫机制。

2,获取网页内容,保存在一个字符串内容中。

3,构造正则表达式,从内容中匹配关键词模式获取下载链接。需要注意的是,网页中的关键词出现了两遍(如下图),所以我们要利用集()函数清除重复元素。

4,第三步是遍历集合之后的结果,下载链接。

5,设置time . sleep (t)无睡眠间隔的话,网站认定这种行为是攻击,所以我们隔一段时间下载一个,反反爬虫。

具体代码

import  urllib.request #, url 请求   import  re ,,,,,,,,,,, #, regular 表达式   import  os ,,,,,,,,,,, # dirs   import 时间   & # 39;& # 39;& # 39;   url 下载网址   pattern 正则化的匹配关键词   Directory 下载目录   & # 39;& # 39;& # 39;   def  BatchDownload (url、模式、目录):   ,,,,   ,,,#,拉动请求,模拟成浏览器去访问网站→跳过反爬虫机制   ,,,headers =,{& # 39;用户代理# 39;,,& # 39;Mozilla/5.0, (Windows  NT  6.1;, Win64;, x64), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/64.0.3282.186  Safari/537.36 & # 39;}   ,,,opener =, urllib.request.build_opener ()   ,,,opener.addheaders =,(头)   ,,,,   ,,,#,获取网页内容   ,,,content =, opener.open (url) .read () .decode (& # 39; use utf8 # 39;)   ,,,,   ,,,#,构造正则表达式,从内容中匹配关键词模式   ,,,raw_hrefs =, re.findall(模式,内容,,0)   ,,,,   ,,,#,集函数消除重复元素   ,,,hset =,集(raw_hrefs)   ,,,,,,,,   ,,,#,下载链接   ,,,for  href 拷贝hset:   ,,,,,,,#,之所以if  else 是为了区别只有一个链接的特别情况   ,,,,,,,如果(len (hset)在1):   ,,,,,,,,,,,link =, url  +, href [0]   ,,,,,,,,,,,filename =, os.path.join(目录中,href [0])   ,,,,,,,,,,,印刷(“正在下载“,文件名)   ,,,,,,,,,,,urllib.request.urlretrieve(链接,,文件名)   ,,,,,,,,,,,印刷(“成功下载!“)   ,,,,,,,其他的:   ,,,,,,,,,,,link =, url  + href   ,,,,,,,,,,,filename =, os.path.join(目录中,href)   ,,,,,,,,,,,印刷(“正在下载“,文件名)   ,,,,,,,,,,,urllib.request.urlretrieve(链接,,文件名)   ,,,,,,,,,,,印刷(“成功下载!“)   ,,,,,,,,,,,   ,,,,,,,#,无睡眠间隔,网站认定这种行为是攻击,反反爬虫   ,,,,,,,time . sleep (1)   ,   # BatchDownload (& # 39; https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/& # 39;   #,,,,,,,,,,,,,,& # 39;(Storm-Data-Export-Format.docx) & # 39;   #,,,,,,,,,,,,,,& # 39;E: \ stormevents \ csvfiles& # 39;)   ,,,,,,,   # BatchDownload (& # 39; https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/& # 39;   #,,,,,,,,,,,,,,& # 39;(Storm-Data-Export-Format.pdf) & # 39;   #,,,,,,,,,,,,,,& # 39;E: \ stormevents \ csvfiles& # 39;)   ,,,,,,,   # BatchDownload (& # 39; https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/& # 39;   #,,,,,,,,,,,,,,& # 39;(StormEvents_details-ftp_v1.0_d (\ d *) _c (\ d *) .csv.gz) & # 39;,   #,,,,,,,,,,,,,,& # 39;E: \ stormevents \ csvfiles& # 39;)   ,,,,,,,   # BatchDownload (& # 39; https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/& # 39;   #,,,,,,,,,,,,,,& # 39;(StormEvents_fatalities-ftp_v1.0_d (\ d *) _c (\ d *) .csv.gz) & # 39;,   #,,,,,,,,,,,,,,& # 39;E: \ stormevents \ csvfiles& # 39;)   ,   null   null   null   null   null   null   null   null   null   null   null

用python爬虫下载链接的方法