用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写的一个文本编辑器
Jan 23 Python
Python获取网页上图片下载地址的方法
Mar 11 Python
Python的Bottle框架中获取制定cookie的教程
Apr 24 Python
python实现同时给多个变量赋值的方法
Apr 30 Python
利用Python学习RabbitMQ消息队列
Nov 30 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 Python
基于Python实现定时自动给微信好友发送天气预报
Oct 25 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
关于numpy数组轴的使用详解
Dec 05 Python
Python中的With语句的使用及原理
Jul 29 Python
Pytest测试框架基本使用方法详解
Nov 25 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 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
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
Three.js快速入门教程
2016/09/09 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
2020/06/24 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
Django实现快速分页的方法实例
2017/10/22 Python
Python补齐字符串长度的实例
2018/11/15 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
python批量处理txt文件的实例代码
2020/01/13 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
HTML5应用之文件上传
2016/12/30 HTML / CSS
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
高三地理教学反思
2014/01/11 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
就业协议书范本
2014/10/08 职场文书
护士自荐信范文
2015/03/25 职场文书
停电通知范文
2015/04/16 职场文书
庆七一主持词
2015/06/29 职场文书
2016银行求职自荐信
2016/01/28 职场文书