介绍
小编给大家分享一下用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爬虫下载链接的方法