用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 相关文章推荐
ubuntu系统下 python链接mysql数据库的方法
Jan 09 Python
python 获取网页编码方式实现代码
Mar 11 Python
用TensorFlow实现戴明回归算法的示例
May 02 Python
Python SVM(支持向量机)实现方法完整示例
Jun 19 Python
python实现换位加密算法的示例
Oct 14 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
django数据关系一对多、多对多模型、自关联的建立
Jul 24 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
Oct 01 Python
python的faker库用法
Nov 28 Python
Python socket聊天脚本代码实例
Jan 02 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
python 将html转换为pdf的几种方法
Dec 29 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
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
php字符串函数学习之substr()
2015/03/27 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
javascript判断非数字的简单例子
2013/07/18 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
Vue+Element实现网页版个人简历系统(推荐)
2019/12/31 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
Python读写Excel文件的实例
2013/11/01 Python
使用python装饰器验证配置文件示例
2014/02/24 Python
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
Django开发的简易留言板案例详解
2018/12/04 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
什么是唯一索引
2015/07/05 面试题
同事吵架检讨书
2014/02/05 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
赤壁观后感(2)
2015/06/15 职场文书
安全学习心得体会范文
2016/01/18 职场文书
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫