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

 更新时间:2020年11月30日 16:39:57   作者:小妮浅浅  
在本篇文章里小编给大家整理了一篇关于用sleep间隔进行python反爬虫的实例讲解内容,有需要的朋友们可以学习下。

在找寻材料的时候,会看到一些暂时用不到但是内容不错的网页,就这样关闭未免浪费掉了,下次也不一定能再次搜索到。有些小伙伴会提出可以保存网页链接,但这种基本的做法并不能在网页打不开后还能看到内容。我们完全可以用爬虫获取这方面的数据,不过操作过程中会遇到一些阻拦,今天小编就教大家用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反爬虫内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python基于动态规划算法解决01背包问题实例

    Python基于动态规划算法解决01背包问题实例

    这篇文章主要介绍了Python基于动态规划算法解决01背包问题,结合实例形式分析了Python动态规划算法解决01背包问题的原理与具体实现技巧,需要的朋友可以参考下
    2017-12-12
  • python读取相对路径和绝对路径的方法

    python读取相对路径和绝对路径的方法

    这篇文章主要介绍了python读取相对路径和绝对路径,下面的路径介绍针对windows,在编写的py文件中打开文件的时候经常见到下面其中路径的表达方式,需要的朋友可以参考下
    2023-02-02
  • 深人了解Python上下文管理器

    深人了解Python上下文管理器

    这篇文章主要为大家介绍了Python上下文管理器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助<BR>
    2021-12-12
  • 基于Python实现打哈欠检测详解

    基于Python实现打哈欠检测详解

    这篇文章主要介绍了如何利用Python+OpenCV实现人打哈欠检测,文中的示例代码讲解详细,对我们学习Python有一定帮助,感兴趣的可以了解一下
    2022-04-04
  • 浅谈Python中的私有变量

    浅谈Python中的私有变量

    本篇文章给大家讲述了Python中的私有变量相关的知识点内容,学习后大家会对私有变量有更系统的了解。
    2018-02-02
  • python 如何读、写、解析CSV文件

    python 如何读、写、解析CSV文件

    这篇文章主要介绍了python 如何读、写、解析CSV文件,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • Tensorflow Summary用法学习笔记

    Tensorflow Summary用法学习笔记

    这篇文章主要介绍了Tensorflow Summary用法学习笔记,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • python爬取youtube视频的示例代码

    python爬取youtube视频的示例代码

    这篇文章主要介绍了python爬取youtube视频的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • python解决字典中的值是列表问题的方法

    python解决字典中的值是列表问题的方法

    这篇文章主要介绍了字典中的值是列表问题,先用value连成一个str,最后用str.split()作一个转换,生成一个列表.看了python cookbook,上面正好有一个recipe讲到如何处理这样的问题
    2013-03-03
  • python实现大学人员管理系统

    python实现大学人员管理系统

    这篇文章主要为大家详细介绍了python实现大学人员管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10

最新评论