前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python爬虫学习:爬虫与反爬虫

python爬虫学习:爬虫与反爬虫

作者头像
python学习教程
修改于 2019-07-10 06:39:10
修改于 2019-07-10 06:39:10
4.1K0
举报
文章被收录于专栏:python学习教程python学习教程

点击蓝字“python教程”关注我们哟!

前言

Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取!

一.简介

万维网上有着无数的网页,包含着海量的信息,有些时候我们需要从某些网站提取出我们感兴趣、有价值的内容。但是不可能靠人工去点击网页复制粘贴。我们需要一种能自动获取网页内容并可以按照指定规则提取相应内容的程序,这就是爬虫。

网络爬虫本质就是http请求,浏览器是用户主动操作然后完成HTTP请求,而爬虫需要自动完成http请求,网络爬虫需要一套整体架构完成工作。

一般来说一个完整的爬虫生命周期包括:URL管理、页面下载、内容抽取、持久化。

URL管理

首先url管理器添加了新的url到待爬取集合中,判断了待添加的url是否在容器中、是否有待爬取的url,并且获取待爬取的url,将url从待爬取的url集合移动到已爬取的url集合。

页面下载

下载器将接收到的url传给互联网,互联网返回html文件给下载器,下载器将其保存到本地,一般的会对下载器做分布式部署,一个是提交效率,再一个是起到请求代理作用。

内容抽取

页面解析器主要完成的是从获取的html网页字符串中取得有价值的感兴趣的数据和新的url列表。数据抽取比较常用的手段有基于css选择器、正则表达式、xpath的规则提取。一般提取完后还会对数据进行一定的清洗或自定义处理,从而将请求到的非结构数据转化为我们需要的结构化数据

数据持久化

数据持久化到相关的数据库、队列、文件等方便做数据计算和与应用对接。

二.爬虫分类

网络爬虫按照实现的技术和结构一般分为通用网络爬虫、聚焦网络爬虫。从特性上也有增量式网络爬虫和深层网络爬虫等类别,在实际的网络爬虫中,通常是这几类爬虫的组合体。

通用网络爬虫

通用网络爬虫(General Purpose Web Crawler)。通用网络爬虫又叫作全网爬虫,顾名思义,通用网络爬虫爬取的目标资源在全互联网中。通用网络爬虫所爬取的目标数据是巨大的,并且爬行的范围也是非常大的,正是由于其爬取的数据是海量数据,故而对于这类爬虫来说,其爬取的性能要求是非常高的。这种网络爬虫主要应用于大型搜索引擎中,有非常高的应用价值。

通用网络爬虫主要由初始URL集合、URL队列、页面爬行模块、页面分析模块、页面数据库、链接过滤模块等构成。通用网络爬虫在爬行的时候会采取一定的爬行策略,主要有深度优先爬行策略和广度优先爬行等策略。

聚焦网络爬虫

聚焦网络爬虫(Focused Crawler)也叫主题网络爬虫,顾名思义,聚焦网络爬虫是按照预先定义好的主题有选择地进行网页爬取的一种爬虫,聚焦网络爬虫不像通用网络爬虫一样将目标资源定位在全互联网中,而是将爬取的目标网页定位在与主题相关的页面中,此时,可以大大节省爬虫爬取时所需的带宽资源和服务器资源。聚焦网络爬虫主要应用在对特定信息的爬取中,主要为某一类特定的人群提供服务。

聚焦网络爬虫主要由初始URL集合、URL队列、页面爬行模块、页面分析模块、页面数据库、链接过滤模块、内容评价模块、链接评价模块等构成。内容评价模块可以评价内容的重要性,同理,链接评价模块也可以评价出链接的重要性,然后根据链接和内容的重要性,可以确定哪些页面优先访问。

增量式网络爬虫

增量式网络爬虫(Incremental Web Crawler),所谓增量式,对应着增量式更新。增量式更新指的是在更新的时候只更新改变的地方,而未改变的地方则不更新,所以增量式网络爬虫,在爬取网页的时候,只爬取内容发生变化的网页或者新产生的网页,对于未发生内容变化的网页,则不会爬取。增量式网络爬虫在一定程度上能够保证所爬取的页面,尽可能是新页面。

深层网络爬虫

深层网络爬虫(Deep Web Crawler),常规的网络爬虫在运行中无法发现隐藏在普通网页中的信息和规律,缺乏一定的主动性和智能性。深层网络爬虫则可以抓取到深层网页的数据。一般网络页面分为表层网页和深层网页。 表层网页是指传统搜索引擎可以索引的页面,而深层页面是只有用户提交一些关键词才能获得的页面,例如那些用户注册后内容才可见的网页就属于深层网页。

三.爬虫与反爬虫

爬虫目的是自动化的从目标网页获取数据,但是这个行为会对目标站点造成一定压力,对方出于对站点性能或数据的保护,一般都会有反爬手段。所以在开发爬虫过程中需要考虑反反爬。

爬虫开发过程中常见分布式(代理IP)、异步数据解析(内置浏览器内核)、光学图片识别、模拟验证(模拟请求Header、User-Agent、Token)等手段。网络爬虫会为Web服务器带来巨大的资源开销,当我们编写的爬虫数据不能给我们带来价值时,我们应停止没必要的网络请求来给互联网减少干扰。

站点反爬一般会考虑后台对访问进行统计,对单个IP,Session、单种User-Agent访问超过阈值或 Referer缺失的请求进行封锁,Robots协议,异步数据加载,页面动态化,请求验证拦截等。高端的反反爬包括混淆、不稳定代码、给假数据(投毒)、行为分析、假链陷阱、字符转图片等。一般反爬虫策略多数用在比较低级的爬虫上,这类爬虫多为简单粗暴的不顾服务器压力不停访问,再一种为失控的或被人遗忘的爬虫,这类爬虫一般需要在第一时间封锁掉。

鉴于爬虫爬取的数据为目标网站发布于互联网的公开数据,所以理论上是不可能完全阻止掉爬虫的。站点能做的只是增加爬虫的爬取难度,让爬虫的开发成本增高从而知难而退。越是高级的爬虫,越难被封锁,相应高级爬虫的开发成本也越高。

在对高级爬虫进行封锁时,如果成本高到一定程度,并且爬虫不会给自己带来大的性能压力和数据威胁时,这时就无需继续提升成本和爬虫对抗了。目前大多热门站点在与爬虫的博弈中,多维持着一个爬虫与反爬虫的平衡,毕竟双方都是为了在商业市场中获取利益,而不是不计成本的干掉对方。

注意事项

01

对Python开发技术感兴趣的同学,欢迎加下方的交流群一起学习,相互讨论。

02

学习python过程中有不懂的可以加入我的python零基础系统学习交流秋秋qun:934109170,与你分享Python企业当下人才需求及怎么从零基础学习Python,和学习什么内容。相关学习视频资料、开发工具都有分享

好啦!文章就给看官们分享到这儿

最后,如果觉得有帮助,记得关注、转发、收藏哟

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python爬虫第一天
       控制节点,也叫中央控制器,主要负责根据url地址分配线程,并调用爬虫节点进行具体的爬行。
py3study
2020/01/17
7620
详解4种类型的爬虫技术
聚焦网络爬虫(focused crawler)也就是主题网络爬虫。聚焦爬虫技术增加了链接评价和内容评价模块,其爬行策略实现要点就是评价页面内容以及链接的重要性。
Python进阶者
2021/03/29
2.4K0
详解4种类型的爬虫技术
数据界的达克摩斯之剑----深入浅出带你理解网络爬虫(First)
网络爬虫 为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(general purpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。 三.爬虫背后的相关技术和原理 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存储,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
一枕眠秋雨
2024/03/11
1650
数据界的达克摩斯之剑----深入浅出带你理解网络爬虫(First)
Python 爬虫介绍
作为程序员,相信大家对“爬虫”这个词并不陌生,身边常常会有人提这个词,在不了解它的人眼中,会觉得这个技术很高端很神秘。不用着急,我们的爬虫系列就是带你去揭开它的神秘面纱,探寻它真实的面目。
纯洁的微笑
2019/11/20
6770
Python 爬虫介绍
python爬虫学习(1)——初识爬虫
网络爬虫(Web Crawler),也称为网页蜘蛛(spider)或机器人(bot),是一种自动浏览互联网的程序。它的主要任务是从一个或多个起始网页开始,递归地访问网页,收集信息,并将其存储在本地数据库中,以供搜索引擎索引或进行其他类型的分析。
用户10922923
2024/05/27
2500
【Java爬虫】003-WebMagic学习笔记
WebMagic是一款爬虫框架,其底层是对HttpClient和Jsoup的封装。WebMagic项目代码分为核心和扩展两部分,核心部分(webmagic-core)是一个精简的、模块化的爬虫实现,而扩展部分则包括一些便利的、实用性的功能。
訾博ZiBo
2025/01/06
1180
【Java爬虫】003-WebMagic学习笔记
Python网络爬虫(理论篇)
通用网络爬虫的实现原理及过程可以简要概括如下: 1)获取初始的URL。 2)根据初始的URL爬取页面,并获得新的URL。 3)将新的URL放到URL队列中。 4)从URL队列中读取新的URL,并依据新的URL爬取网页,同时从新网页中获取URL,并重复上述的爬取过程。 5)满足爬虫系统设置的停止,停止爬取。
Python研究者
2020/09/28
7450
Python网络爬虫(理论篇)
「Python爬虫系列讲解」一、网络数据爬取概述
随着互联网的迅速发展,万维网已成为大量信息的载体,越来越多的网民可以通过互联网搜索引擎获取所需要的信息。
荣仔_最靓的仔
2021/02/02
1.6K0
「Python爬虫系列讲解」一、网络数据爬取概述
爬虫与反爬虫技术简介
互联网的大数据时代的来临,网络爬虫也成了互联网中一个重要行业,它是一种自动获取网页数据信息的爬虫程序,是网站搜索引擎的重要组成部分。通过爬虫,可以获取自己想要的相关数据信息,让爬虫协助自己的工作,进而降低成本,提高业务成功率和提高业务效率。
2020labs小助手
2022/09/20
8560
python爬虫(一)_爬虫原理和数据抓取
本篇将开始介绍Python原理,更多内容请参考:Python学习指南 为什么要做爬虫 著名的革命家、思想家、政治家、战略家、社会改革的主要领导人物马云曾经在2015年提到由IT转到DT,何谓DT,DT即数据技术,由数据在推倒人们的衣食住行,当今时代是一个大数据时代,数据从何而来? 企业产生的用户数据:百度指数、阿里指数、TBI腾讯浏览指数、新浪微博指数 数据平台购买数据:数据堂、国云数据市场、贵阳大数据交易所 政府机构公开的数据:中华人民共和国国家统计局数据、世界银行公开数据、联合国数据、纳斯达克
用户1174963
2018/01/17
3.1K0
python爬虫(一)_爬虫原理和数据抓取
Python爬虫-01:爬虫的概念及分类
1.定义: 搜索引擎用的爬虫系统 2.目标: 把所有互联网的网页爬取下来,放到本地服务器形成备份,在对这些网页做相关处理(提取关键字,去除广告),最后提供一个用户可以访问的借口
py3study
2020/01/19
1.5K0
数据获取:去菜市场采购还是自己去地里挖?
数据分析就是像是做饭一样,正所谓“巧妇难为无米之炊”。数据分析的前提就是数据的获取,只有把食材准备好,经过我们的加工,可以呈现出一道色香味俱全的美味菜肴。所以数据获取是整个数据分析的中流砥柱,数据质量的高低直接导致最终的结果是否准确。
马拉松程序员
2023/02/24
2880
数据获取:去菜市场采购还是自己去地里挖?
Python 反爬虫与反反爬虫
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 反爬虫与反反爬虫 ---- Python 反爬虫与反反爬虫 1.什么是爬虫 2.为什么要反爬虫 3.反爬虫的手段 3.1 基于请求头 3.2 基于用户行为 4.反反爬虫 4.1 设置请求头 4.2 设置间隔时间 5.爬虫协议 ---- 1.什么是爬虫 网络爬虫(又称为网页蜘蛛,网络机器人,在FOA
小嗷犬
2022/11/15
8030
python网络爬虫合法吗
Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取!
python学习教程
2019/07/10
2.6K0
python网络爬虫合法吗
javaweb-爬虫-2-63
1.WebMagic介绍 2.WebMagic功能 3.爬虫分类 4.案例开发分析 5.案例实现 项目地址:https://github.com/Jonekaka/javaweb-crawler-1-62
全栈程序员站长
2021/05/19
1K0
Python爬虫图片:从入门到精通
在数字化时代,图片作为信息传递的重要媒介之一,其获取和处理变得越来越重要。Python作为一种功能强大且易于学习的编程语言,非常适合用来编写爬虫程序,帮助我们自动化地从互联网上获取图片资源。本文将从基础到高级,详细介绍如何使用Python编写图片爬虫。
正在走向自律
2024/12/18
3350
Python爬虫图片:从入门到精通
你真的了解网络爬虫吗?
Google 与 Yahoo 等网站的背后,都有一个强大的网页收集程序,可以将全世界的网页通通抓回去储存以便提供搜寻之用,这个程式就称为 "爬虫 (Crawler)",也有人索性称为蜘蛛 (Spide
Python中文社区
2018/01/31
1.3K0
你真的了解网络爬虫吗?
干货:一文看懂网络爬虫实现原理与技术(值得收藏)
不同类型的网络爬虫,其实现原理也是不同的,但这些实现原理中,会存在很多共性。在此,我们将以两种典型的网络爬虫为例(即通用网络爬虫和聚焦网络爬虫),分别为大家讲解网络爬虫的实现原理。
IT阅读排行榜
2019/05/15
5.5K0
基于python-scrapy框架的爬虫系统[通俗易懂]
通用爬虫工作流程: 爬取网页 – 存储数据 – 内容处理 – 提供检索/排名服务
全栈程序员站长
2022/06/27
9900
基于python-scrapy框架的爬虫系统[通俗易懂]
网络爬虫有什么用?怎么爬?手把手教你爬网页(Python代码)
导读:本文主要分为两个部分:一部分是网络爬虫的概述,帮助大家详细了解网络爬虫;另一部分是HTTP请求的Python实现,帮助大家了解Python中实现HTTP请求的各种方式,以便具备编写HTTP网络程序的能力。
IT阅读排行榜
2019/05/09
2.6K0
网络爬虫有什么用?怎么爬?手把手教你爬网页(Python代码)
相关推荐
python爬虫第一天
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档