爬虫技术

一、什么是网络爬虫

网络爬虫(web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。

二、爬虫分类:

主要分为以下三类:

1、小规模,数据量小,爬取速度不敏感;对于这类网络爬虫我们可以使用Requests库来实现,主要用于爬取网页;

2、中规模,数据规模较大,爬取速度敏感;对于这类网络爬虫我们可以使用Scrapy库来实现,主要用于爬取网站或系列网站;

3、大规模,搜索引擎,爬取速度关键;此时需要定制开发,主要用于爬取全网,一般是建立全网搜索引擎,如百度、Google搜索等。

在这三种中,我们最为常见的是第一种,大多数均是小规模的爬取网页的爬虫。

Robots协议:

从爬虫的限制中,可以看到Robots协议是防止爬虫的一种手段。robots.txt是一个协议,是搜索引擎中访问网站的时候要查看的第一个文件。它告诉蜘蛛程序在服务器上什么文件是可以被查看的。

当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;

三、爬虫原理

传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。

然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;

所以一个完整的爬虫一般会包含如下三个模块:

l 网络请求模块

l 爬取流程控制模块

l 内容分析提取模块

网络请求

我们常说爬虫其实就是一堆的http(s)请求,找到待爬取的链接,然后发送一个请求包,得到一个返回包,当然,也有HTTP长连接(keep-alive)或h5中基于stream的websocket协议,这里暂不考虑;

所以核心的几个要素就是:

l url

l 请求header、body

l 响应herder、内容

四、简单实例

网络爬虫的第一步就是根据 URL,获取网页的 HTML 信息。在 Python3 中,可以使用urllib.request和requests进行网页爬取。

urllib 库是 python 内置的,无需我们额外安装,只要安装了 Python 就可以使用这个库。requests 库是第三方库,需要我们自己安装。使用 requests 库获取网页的 HTML 信息。

requests 库的基础方法如下:

首先,让我们看下 requests.get()方法,它用于向服务器发起 GET 请求,不了解 GET 请求没有关系。我们可以这样理解:get 的中文意思是得到、抓住,那这个 requests.get()方法就是从服务器得到、抓住数据,也就是获取数据。让我们看一个例子(以 www.gitbook.cn 为例)来加深理解:

1. 1# -*- coding:UTF-8 -*-

2. 2import requests

3. 3

4. 4if __name__ == '__main__':

5. 5 target = 'http://gitbook.cn/'

6. 6 req = requests.get(url=target)

7. 7 print(req.text)

requests.get()方法必须设置的一个参数就是 url,因为我们得告诉 GET 请求,我们的目标是谁,我们要获取谁的信息。运行程序看下结果:

左侧是我们程序获得的结果,右侧是我们在 www.gitbook.cn 网站审查元素获得的信息。我们可以看到,我们已经顺利获得了该网页的 HTML 信息。这就是一个最简单的爬虫实例,可能你会问,我只是爬取了这个网页的 HTML 信息。

作家:经典、

python 爬虫_python爬虫技术汇总相关推荐

  1. 快速学python爬虫_Python爬虫丨应当如何快速高效学习

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:小小科 ( 想要学习Python?Python学习交流 ...

  2. 51自学网python爬虫_Python爬虫知识点梳理

    学任何一门技术,都应该带着目标去学习,目标就像一座灯塔,指引你前进,很多人学着学着就学放弃了,很大部分原因是没有明确目标,所以,在你准备学爬虫前,先问问自己为什么要学习爬虫.有些人是为了一份工作,有些 ...

  3. python从入门到爬虫_python爬虫从入门到放弃(一)之初识爬虫

    什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引. ...

  4. python 基金净值_Python爬虫周记之案例篇——基金净值Selenium动态爬虫

    在成功完成基金净值爬虫的爬虫后,简单了解爬虫的一些原理以后,心中不免产生一点困惑--为什么我们不能直接通过Request获取网页的源代码,而是通过查找相关的js文件来爬取数据呢? 有时候我们在用req ...

  5. 51自学网python爬虫_Python爬虫基本流程

    爬虫定义 爬虫是请求网站并提取自己所需要数据的过程.通过我们的程序,可以代替我们向服务器发送请求,然后进行批量的数据下载. 爬虫基本流程 发起请求 通过url向服务器发送requests请求,请求可以 ...

  6. 推荐一部python教程_Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  7. hadoop 爬虫_python爬虫知识点梳理:带你全面入门python爬虫

    今天主要跟大家谈谈爬虫,尤其是刚入门的伙伴,少走弯路!文末附全套的视频版Python学习教程,含爬虫教程!希望大家能够把文字部分看完!做一个梳理! 在学习爬虫之前我们需要明白的一个问题: 爬虫能做什么 ...

  8. python谷歌网页爬虫_python爬虫入门01:教你在 Chrome 浏览器轻松抓包

    通过 python爬虫入门:什么是爬虫,怎么玩爬虫? 我们知道了什么是爬虫 也知道了爬虫的具体流程 那么在我们要对某个网站进行爬取的时候 要对其数据进行分析 就要知道应该怎么请求 就要知道获取的数据是 ...

  9. python网络爬虫_Python爬虫实战之网络小说

    今天和大家分享的是python爬虫实战,由于本人最近迷上了看网络小说,学生党又穷,只能看看网络dao版小说,现在这类dao版小说网站可以说非常的多,但是所有的网站进去都可以看见一大把的广告信息,非常影 ...

最新文章

  1. Nginx学习4:负载均衡实例
  2. 用户模式 linux救援单用户 虚拟机克隆和linux相互登陆
  3. 【转】POWER MANAGEMENT IN IEEE 802.11
  4. ctr 平滑_预算平滑技术在58商业的探索与实践
  5. 锋利的jquery 知识点总结
  6. VLFeat SLIC超像素分割(Cpp版)
  7. 经典C语言程序100例之三零
  8. UVa810 A Dicey Problem 筛子难题
  9. 程序员编程必备名言佳句,提升装逼指数~
  10. linux上p图工具,linux图片处理工具GraphicsMagick安装使用
  11. 五.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---3.laserOdometry.cpp--前端雷达里程计和位姿粗估计
  12. 数据驱动测试之——CSV+TestNG
  13. 数学建模番外篇1:PPT绘制3D图形
  14. 工业设备无线监控解决方案
  15. C# 添加水印图片、文字、缩略图处理
  16. 如何防止驱动被恶意利用
  17. Elastic:使用 Elastic Stack 来监督系统日志及指标
  18. Django建立一个音乐网站(一)
  19. python_day10のPython操作 RabbitMQ、Redis、Memcache
  20. dns服务器未响应wifi用不上,为你解答dns服务器未响应导致无法上网怎么办

热门文章

  1. AudioTrack到AudioFlinger流程分析(三十八)
  2. Python定义函数及引用
  3. tar 整个linux系统,linux下tar解压
  4. python读取成功_Python如何从文件读取数据()
  5. 接收二进制数据_漫话TCP/IP:数据链路层-以太网(1)
  6. Java中String的用法
  7. 微信小程序 地图功能的实现 map
  8. 人生的四大天规,越早明白,越有福气
  9. oracle11g win10版本,win10系统安装的oracle11g和cloud6.2 创建数据中心报错
  10. torch报告_Stack Overflow 2020调查报告发布,Rust 5连冠