python学习之爬虫理论总结

通用爬虫和聚焦爬虫

根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种.
通用网络爬虫 是 捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分。主要目的
是将互联网上的网 页下载到本地,形成一个互联网内容的镜像备份。
通用网络爬虫 从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索
引从而提供支持,它决定着 整个引擎系统的内容是否丰富,信息是否即时,因此其性
能的优劣直接影响着搜索引擎的效果

搜索引擎如何获取一个新网站的URL:

  1. 新网站向搜索引擎主动提交网址:
  2. 在其他网站上设置新网站外链
  3. 和DNS解析服务商(如DNSPod等)合作,新网站域名将被迅速抓取。

    爬虫限制

    搜索引擎蜘蛛的爬行是被输入了一定的规则的,它需要遵从
    一些命令或文件的内容。

  4. rel="nofollow",,告诉搜索引擎爬虫无需抓
    取目标页,同时告诉搜索引擎无需将的当前页的Pagerank
    传递到目标页.
  5. Robots协议(也叫爬虫协议、机器人协议等),
    全称是“网络爬虫排除标准”(Robots Exclusion
    Protocol),网站通过Robots协议告诉搜索引擎哪些页面可
    以抓取,哪些页面不能抓取。

局限性

1.大多情况下,网页里90%的内容对用户来说都是无用的。

  1. 搜索引擎无法提供针对具体某个用户的搜索结果。
  2. 图片、数据库、音频、视频多媒体等不能很好地发现和获取。
  3. 基于关键字的检索,难以支持根据语义信息提出的查询,无法准确理解用户的具体需求

聚焦爬虫

聚焦爬虫,是"面向特定主题需求"的一种网络爬虫程序,它与通用搜索引擎爬虫的区别在
于:聚焦爬虫在实施网页 抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的
网页信息。
要学习的,就是聚焦爬虫。

HTTP和HTTPS

? HTTP协议-80端口
HyperTextTransferProtocol ,
超文本传输协议是一种发布和接收HTML页面的方法。
? HTTPS-443端口
HypertextTransferProtocoloverSecureSocketLayer ,
简单讲是HTTP的安全版,在HTTP下加入SSL 层。
HTTP工作原理
网络爬虫抓取过程可以理解为模拟浏览器操作的过程。

浏览器发送HTTP请求的过程
1.当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务
器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。

  1. 当我们在浏览器输入URLhttp://www.baidu.com的时候,浏览器发送一个
    Request请求去获取http://www.baidu.com的html文件,服务器把Response文
    件对象发送回给浏览器。
    3.浏览器分析Response中的HTML,发现其中引用了很多其他文件,比如Images
    文件,CSS文件,JS文件。浏览器会自动再次发送Request去获取图片,CSS文件,
    或者JS文件。
  2. 当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。

URL
URL(Uniform/UniversalResourceLocator的缩写):统一资源定位符,是用于完
整地描述Internet上网页和其他资源的地址的一种标识方法。
基本格式: scheme://host[:port#]/path/.../[?query-string][#anchor]
? query-string:参数,发送给http服务器的数据
? anchor:锚(跳转到网页的指定锚点位置)

客户端HTTP请求

客户端发送一个HTTP请求到服务器的请求消息,包括以下格式:

请求方法Method
根据HTTP标准,HTTP请求可以使用多种请求方法.
HTTP0.9:只有基本的文本GET功能。
HTTP1.0:完善的请求/响应模型,并将协议补充完整,定义了三种请求方法:GET,POST和HEAD方法。
HTTP1.1:在1.0基础上进行更新,新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。

Get 和 Post 详解

  1. GET是从服务器上获取数据,POST是向服务器传送数据
  2. GET请求参数显示,都显示在浏览器网址上,即“Get”请求的参数是URL的一部分。
  3. POST请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,通常用来向
    HTTP服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等),请求的参数
    包含在“Content-Type”消息头里,指明该消息体的媒体类型和编码,
    常用的请求报头
    Host: 主机和端口号
    Connection : 客户端与服务连接类型, 默认为keep-alive
    User-Agent: 客户浏览器的名称
    Accept: 浏览器或其他客户端可以接受的MIME文件类型

    常用的请求报头
    Referer:表明产生请求的网页来自于哪个URL
    Accept-Encoding:指出浏览器可以接受的编码方式。
    Accept-Language:语言种类
    Accept-Charset: 字符编码

    常用的请求报头
    Cookie:浏览器用这个属性向服务器发送Cookie
    Content-Type:POST请求里用来表示的内容类型。

    HTTP响应

    HTTP响应由四个部分组成,分别是: 状态行 、 消息报头 、 空行 、 响应正文

    响应状态码


    200: 请求成功
    302: 请求页面临时转移至新url
    307和304: 使用缓存资源
    404: 服务器无法找到请求页面
    403: 服务器拒绝访问,权限不够
    500: 服务器遇到不可预知的情况

    Cookie和Session

    服务器和客户端的交互仅限于请求/响应过程,结束之后便断开,在下一次请求时,服
    务器会认为新的客户端。为了维护他们之间的链接,让服务器知道这是前一个用户发送
    的请求,必须在一个地方保存客户端的信息。
    ?
    Cookie:通过在客户端记录的信
    息确定用户的身份。
    ?
    Session:通过在服务器端记录
    的信息确定用户的身份。

    图片下载器

    制作爬虫的基本步骤

  4. 需求分析:
    http://image.baidu.com/search/index?tn=baiduimage&word=cat
  5. 分析网页源代码,配合F12
  6. 编写正则表达式或者其他解析器代码
  7. 存储数据到本地
  8. 正式编写python爬虫代码
    "我想要图片,我又不想上网搜“
    "最好还能自动下载"
    ......
    这就是需求,至少要实现两个功能,一是搜索图片,二是自动下载。

分析网页


pic_url = re.findall(‘"objURL":"(.*?)",‘,html,re.S)
编写爬虫代码

原文地址:https://blog.51cto.com/13810716/2486958

时间: 2024-11-08 19:17:03

python学习之爬虫理论总结的相关文章

python学习之爬虫一

一,爬虫原理: 通过模拟浏览器的行为 自动从网上获得需要的数据 二,爬虫的流程 1,发送request请求给某个URL : 2,获得返回的response 解析 得到需要的数据 再根据自己的需要进行各种处理 三,具体的实现代码 3.1发送request请求分2种:get 和 post  ,这里使用的是python3 使用的模块是requests ,可使用pip3 install requests(pip也行 只要你的python安装目录下的scripts文件夹里既有pip.exe 又有pip3.

python学习之爬虫(一) ——————爬取网易云歌词

接触python也有一段时间了,一提到python,可能大部分pythoner都会想到爬虫,没错,今天我们的话题就是爬虫!作为一个小学生,关于爬虫其实本人也只是略懂,怀着"Done is better than perfect"的态度硬着头皮开始了这篇文章的撰写!好了,废话不多说! 先说一下今天我们的目的,作为一个音痴但不影响我对于音乐的执着,所以今天我们爬取的是网易云音乐,我们将会通过代码爬取歌词并写入到本地. 作为新手,我很本能就打开页面复制了url,然后用Beautifulsou

Python学习---网页爬虫[下载图片]

爬虫学习--下载图片 1.主要用到了urllib和re库 2.利用urllib.urlopen()函数获得页面源代码 3.利用正则匹配图片类型,当然正则越准确,下载的越多 4.利用urllib.urlretrieve()下载图片,并且可以重新命名,利用%S 5.应该是运营商有所限制,所以未能下载全部的图片,不过还是OK的 URL分析: 源码: #coding=utf-8 import re import urllib def getHtml(url): page=urllib.urlopen(u

python学习之爬虫网络数据采集

Python 给人的印象是抓取网页非常方便,提供这种生产力的,主要依靠的就是urllib.requests这两个模块. 网络数据采集之urllib urllib库官方文档地址:https://docs.python.org/3/library/urllib.htmlurllib库是python的内置HTTP请求库,包含以下各个模块内容:(1)urllib.request:请求模块(2)urllib.error:异常处理模块(3)urllib.parse:解析模块(4)urllib.robotpa

Python学习 之 爬虫

目标:下载贴吧或空间中所有图片 步骤:(1)获取页面代码 (2)获取图片URL,下载图片 代码如下: #!/usr/bin/python import re import urllib def getHtml(url): page=urllib.urlopen(url) html=page.read() return heml def getImg(html): reg=r'src="(.*?\.jpg" width' imgre=re.compile(reg) imglist=re.

python学习之爬虫:BeautifulSoup

一.功能: BeautifulSoup是用来从HTML或XML中提取数据的Python库. 二.导入: from bs4 import BeautifulSoup import bs4 三.编码格式: soup使用Unicode编码 四.对象种类: 有四种类型:Tag,NavigableString,BeautifulSoup,Comment.BeautifulSoup将文档转化为树形结构,每个节点都是上述四种类型的Python对象. tag属性:name.attrs 参考网址: 1.http:

python学习笔记——爬虫的抓取策略

1 深度优先算法 2 广度/宽度优先策略 3 完全二叉树遍历结果 深度优先遍历的结果:[1, 3, 5, 7, 9, 4, 12, 11, 2, 6, 14, 13, 8, 10] 广度优先遍历的结果:[1, 3, 2, 5, 4, 6, 8, 7, 9, 12, 11, 14, 13, 10] 4 实践中怎么来组合爬取策略 (1)一般来说,重要的网页距离入口站点的距离很近: (2)广度/宽度优先有利于多爬虫并行进行合作: (3)可以考虑将深度与广度/宽度相结合的方式来实现抓取的策略:优先考虑广

python学习5 爬虫老是被封如何解决

先设置等待时间: 常见的设置等待时间有两种,一种是显性等待时间(强制停几秒),一种是隐性等待时间(看具体情况,比如根据元素加载完成需要时间而等待)图 1 是显性等待时间设置,图 2 是隐性. 第二步,修改请求头: 识别你是程序还是网友浏览器浏览的重要依据就是 User-Agent,比如网友用浏览器浏览就会使这个样子的 User-Agent:’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Ch

python学习笔记——爬虫中提取网页中的信息

1 数据类型 网页中的数据类型可分为结构化数据.半结构化数据.非结构化数据三种 1.1 结构化数据 常见的是MySQL,表现为二维形式的数据 1.2 半结构化数据 是结构化数据的一种形式,并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层.因此,它也被称为自描述的结构.常见的半结构数据有HTML,XML和JSON等,实际上是以树或者图的结构来存储的. <person> <name>A</name> &l