用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 相关文章推荐
pandas 数据实现行间计算的方法
Jun 08 Python
python实现猜数字小游戏
Mar 24 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
pycharm访问mysql数据库的方法步骤
Jun 18 Python
梅尔倒谱系数(MFCC)实现
Jun 19 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
python 数据分析实现长宽格式的转换
May 18 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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中的数组操作函数整理
2008/08/18 PHP
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
php中session与cookie的比较
2015/01/27 PHP
php实现字符串翻转的方法
2015/03/27 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
php多进程应用场景实例详解
2019/07/22 PHP
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
跟老齐学Python之重回函数
2014/10/10 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
关于python3中setup.py小概念解析
2019/08/22 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
一位农村小子的自荐信
2014/04/07 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
2014年党支部学习材料
2014/05/19 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
python库sklearn常用操作
2021/08/23 Python