用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处理二进制数据的方法
Jun 03 Python
Python实现网站注册验证码生成类
Jun 08 Python
分享一个简单的python读写文件脚本
Nov 25 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
Oct 14 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
Jan 08 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 Python
python pygame实现五子棋小游戏
Oct 26 Python
python关于倒排列的知识点总结
Oct 13 Python
pytorch--之halfTensor的使用详解
May 24 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
mac下安装nginx和php
2013/11/04 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
php判断目录存在的简单方法
2019/09/26 PHP
一个javascript参数的小问题
2008/03/02 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
用python处理MS Word的实例讲解
2018/05/08 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
Python OpenCV调用摄像头检测人脸并截图
2020/08/20 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
详解KMP算法以及python如何实现
2020/09/18 Python
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
商场父亲节活动方案
2014/08/27 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python
python数字图像处理:图像简单滤波
2022/06/28 Python