用sleep间隔进行python反爬虫的实例讲解


Posted in Python onNovember 30, 2020

在找寻材料的时候,会看到一些暂时用不到但是内容不错的网页,就这样关闭未免浪费掉了,下次也不一定能再次搜索到。有些小伙伴会提出可以保存网页链接,但这种基本的做法并不能在网页打不开后还能看到内容。我们完全可以用爬虫获取这方面的数据,不过操作过程中会遇到一些阻拦,今天小编就教大家用sleep间隔进行python反爬虫,这样就可以得到我们想到的数据啦。

步骤

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

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

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

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

设置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)
       
    # 无sleep间隔,网站认定这种行为是攻击,反反爬虫
    time.sleep(1)
 
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
#       '(Storm-Data-Export-Format.docx)',
#       'E:\stormevents\csvfiles')
     
#       '(Storm-Data-Export-Format.pdf)',
#       '(StormEvents_details-ftp_v1.0_d(\d*)_c(\d*).csv.gz)',
#       '(StormEvents_fatalities-ftp_v1.0_d(\d*)_c(\d*).csv.gz)',
#       '(StormEvents_locations-ftp_v1.0_d(\d*)_c(\d*).csv.gz)',
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/legacy/',
#       '(ugc_areas.csv)',
#       'E:\stormevents\csvfiles\legacy')

结果展示

为了让大家能够清楚的知道整个反爬过程,这里小编把思路和代码都罗列了出来。其中可以time.sleep(t)解除网站对于爬虫的阻拦问题,着重标记了出来

用sleep间隔进行python反爬虫的实例讲解

到此这篇关于用sleep间隔进行python反爬虫的实例讲解的文章就介绍到这了,更多相关如何使用sleep间隔进行python反爬虫内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
给Python的Django框架下搭建的BLOG添加RSS功能的教程
Apr 08 Python
Python编程中使用Pillow来处理图像的基础教程
Nov 20 Python
详解Python验证码识别
Jan 25 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
Jan 17 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
Python3 文章标题关键字提取的例子
Aug 26 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
py-charm延长试用期限实例
Dec 22 Python
Python SQLAlchemy库的使用方法
Oct 13 Python
python 获取域名到期时间的方法步骤
Feb 10 Python
Python基于Faker假数据构造库
Nov 30 #Python
python爬虫调度器用法及实例代码
Nov 30 #Python
python爬虫中url管理器去重操作实例
Nov 30 #Python
python爬虫中的url下载器用法详解
Nov 30 #Python
Python接口自动化测试框架运行原理及流程
Nov 30 #Python
Django数据模型中on_delete使用详解
Nov 30 #Python
Django数据统计功能count()的使用
Nov 30 #Python
You might like
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
Python下rrdtool模块的基本使用方法
2015/11/13 Python
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
python操作列表的函数使用代码详解
2017/12/28 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
市场营销毕业生自荐信
2013/11/23 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
结婚主持人致辞
2015/07/28 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书