精华内容
下载资源
问答
  • 网络爬虫简介 ppt

    2017-11-14 20:53:56
    网络爬虫简介 ppt 。
  • 爬虫简介

    2020-04-29 13:07:52
    文章目录1. 通讯协议1.1 端口1.2通讯协议2....3.4 Python 做爬虫的优势3.5 爬虫的分类4. 几个概念4.1 GET和POST4.2 URL的组成4.3 User-Agent 用户代理4.4 Referer4.5 状态码5. 抓包工具 1. 通讯协议 ...

    1. 通讯协议

    1.1 端口

    我们想要进行数据通讯分几步?

    • 第一步: 找到对方IP
    • 第二步: 数据要发送到对方指定的应用程序上。为了标识这些应用程序,所以给这些网络应用程序都用数字进行了标识。为了方便称呼这个数字,叫做端口。这里的端口,我们一般都叫做 逻辑端口
    • 第三步: 定义通讯规则。这个通讯规则我们一般称之为协议

    1.2通讯协议

    • 国际组织定义了通用的通信协议:TCP/IP协议
    • 所谓协议就是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则
    • HTTP又叫做超文本传输协议(是一种通信协议)
    • HTTP 它的端口是 80

    2. 网络模型

    • 网络模型是数据库模型设想为代表对象及其关系的一种灵活的方式。其独特之处在于,作为对象类型为节点和关系类型为弧的图形来看,不限于层次结构。
    • OSI 七层参考模型
      在这里插入图片描述

    在这里插入图片描述

    • 后期更新了新的参考模型 TCP/IP参考模型
      在这里插入图片描述

    2.1 HTTPS

    • https=http+ssl,顾名思义,https是在http的基础上加上了SSL保护壳,信息的加密过程就是在SSL中完成
    • https,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。
    • 即HTTP下加入SSL层,HTTPS的安全基础是SSL

    2.2 SSL

    • SSL也是一个协议主要用于web的安全传输协议
      在这里插入图片描述

    3. 爬虫介绍

    3.1 什么是爬虫?

    • 简单一句话就是代替人去模拟浏览器进行网页操作

    3.2 为什么需要爬虫?

    • 为其他程序提供数据源 如搜索引擎(百度、Google等)、数据分析、大数据等等

    3.3 企业获取数据的方式?

    • 1.公司自有的数据
    • 2.第三方平台购买的数据 (百度指数、数据堂)
    • 3.爬虫爬取的数据

    3.4 Python 做爬虫的优势

    编程语言特点
    PHP对多线程、异步支持不太好
    Java代码量大,代码笨重
    C/C++代码量大,难以编写
    Python支持模块多、代码简介、开发效率高 (scrapy框架)

    3.5 爬虫的分类

    • 通用网络爬虫 例如 baidu google yahu
    • 聚焦网络爬虫: 根据既定的目标有选择的抓取某一特定主题内容
    • 增量式网络爬虫: 指对下载网页采取增量式的更新和只爬行新产生的或者已经发生变化的网页爬虫
    • 深层网络爬虫: 指那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的web页面 例如 用户登录注册才能访问的页面

    4. 几个概念

    4.1 GET和POST

    • GET : 查询参数都会在URL上显示出来
    • POST : 查询参数和需要提交数据是隐藏在Form表单里的,不会在URL地址上显示出来

    4.2 URL的组成

    • URL: 统一资源定位符

    https://new.qq.com/omn/TWF20200/TWF2020032502924000.html

    • https: 协议
    • new.qq.com: 主机名可以将主机理解为一台名叫news.qq.com 的机器。这台主机在 qq.com 域名下
    • port 端口号: 80 /new.qq.com 在他的后面有个 :80 可以省略
    • TWF20200/TWF2020032502924000.html 访问资源的路径
    • #anchor: 锚点用前端在做页面定位的

    注意 : 在浏览器请求一个url,浏览器会对这个url进行一个编码。(除英文字母、数字和部分标识其他的全部使用% 加 十六进制码进行编码)
    • 例如 : https://tieba.baidu.com/f?ie=utf-8&kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&fr=search
    • %E6%B5%B7%E8%B4%BC%E7%8E%8B = 海贼王

    4.3 User-Agent 用户代理

    • User Agent中文名为用户代理,简称 UA,
    • 它是一个特殊字符串头,使得服务器能够识别客户使用的
      • 操作系统及版本
      • CPU 类型
      • 浏览器及版本
      • 浏览器渲染引擎
      • 浏览器语言
      • 浏览器插件等。
    • User_Agent:
      • Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
      • Mozilla Firefox:(Gecko内核)

    4.4 Referer

    • 表明当前这个请求是从哪个url过来的。一般情况下可以用来做反爬的技术

    4.5 状态码

    • 200 : 请求成功
    • 301 : 永久重定向
    • 302 : 临时重定向
    • 403 : 服务器拒绝请求
    • 404 : 请求失败(服务器无法根据客户端的请求找到资源(网页))
      500 : 服务器内部请求

    5. 抓包工具

    在这里插入图片描述

    • Elements : 元素 网页源代码,提取数据和分析数据(有些数据是经过特殊处理的所以并不是都是准确的
    • Console : 控制台 (打印信息)
    • Sources : 信息来源 (整个网站加载的文件)
    • NetWork : 网络工作(信息抓包) 能够看到很多的网页请求
    展开全文
  • Java网络爬虫简介

    2021-03-27 18:40:21
    一、爬虫介绍 1. 概述 网络爬虫(Web crawler)也叫网络蜘蛛(Web spide)自动检索工具(automatic indexer),是一种”自动化浏览网络“的程序,或者说是一种网络机器人。 爬虫被广泛用于互联网搜索引擎或其他类似...

    一、爬虫介绍

    1. 概述

    网络爬虫(Web crawler)也叫网络蜘蛛(Web spide)自动检索工具(automatic indexer),是一种”自动化浏览网络“的程序,或者说是一种网络机器人。

    爬虫被广泛用于互联网搜索引擎或其他类似网站,以获取或更新这些网站的内容和检索方式。

    它们可以自动采集所有其能够访问到的页面内容,以供搜索引擎做进一步处理(分检整理下载的页面),而使得用户能更快的检索到他们需要的信息。

    2. 应用

    2.1 搜索引擎

    爬虫程序可以为搜索引擎系统爬取网络资源,用户可以通过搜索引擎搜索网络上一切所需要的资源。

    搜索引擎是一套非常庞大且精密的算法系统,搜索的准确性,高效性等都对搜索系统有很高的要求。

    2.2 数据挖掘

    爬虫除了用来做搜索外,还可以做非常多的工作,可以说爬虫现在在互联网项目中应用的非常广泛。

    互联网项目通过爬取相关数据主要进行数据分析,获取价值数据。

    3. 爬虫原理

    2.1 框架设计图

    基本工作流程如下:
    1. 选取种子URL;
    2. 将种子URL放入待抓取URL队列;
    3. 从待抓取URL队列中取出待抓取在URL;
    4. 解析DNS,并且得到主机的ip;
    5. 下载URL对应的网页,存储入库;
    6. 将抓取完成URL放进已抓取URL队列;
    7. 分析已抓取URL队列中的URL,分析网页中的其他URL,并且将URL放入待抓取URL队列;
    8. 从而进入下一个循环;

    在这里插入图片描述

    2.2 Java爬虫框架

    框架说明
    NutchNutch 属于分布式爬虫,爬虫使用分布式,主要是解决两个问题:1. 海量数据, 2. 网速。做搜索引擎,Nutch 1.x 是一个非常好的选择,Nutch 1.x 和 solr 或 es 配合,就可以构成一个非常强大的搜索引擎。 但 Nutch 进行爬虫的二次开发所需的编写和调试时间比其他单机爬虫十倍不止。
    HeritrixHetritrix 是个 " Archival Crawler ",来获取完整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容,抓取并存储相关的内容,对内容不做过滤,也不对页面内容进行修改,重新爬取相同的URL不会对先前的进行替换。爬虫主要通过Web用户界面启动、监控和调整,允许弹性的定义要获取的url。
    Crawler 4jCrawler 4j 是Java实现的开源网络爬虫。提供了简单的接口,可以在几分钟内时实现一个多线程的网络爬虫
    WebCollectorWebCollector 使用了 Nutch 的爬取逻辑(分层广度遍历)、Crawler 4j 的用户接口(覆盖 visit方法,定义用户操作),以及一套自己的插件机制,设计了一套爬虫内核
    WebMagicWebMagic 代码分为核心和扩展两部分,核心部分(WebMagic-Core)是一个精简的、模块化的爬虫实现;而扩展部分则包括一些便利的、实用性的功能。WebMagic 的架构设计参照了Scrapy,目标是尽量的模块化,并体现爬虫的功能特点。

    4. HttpClient & Jsoup

    4.1 HttpClient简介

    HttpClient 是 apache 组织下面的一个用于处理 HTTP 请求和响应的开源工具。它不是一个浏览器,也不处理客户端缓存等浏览器的功能。它只是一个类库!它在 JDK 的基本类库基础上做了更好的封装。

    HttpClient 项目依赖于 HttpCore(处理核心的 HTTP 协议)、commons-codec(处理与编码有关的问题的项目)和 commons-logging(处理与日志记录有关问题的项目)。

    如果希望能够通过 HttpClient 向服务器上传文件等与 multipart 编码类型有关的请求,以及其它复杂的MIME 类型,那么,需要另外一个依赖包:HttpMime(它是专门处理与 MIME 类型有关问题的项目)。

    在下载的 HttpClient 包中(下载地址为:http://hc.apache.org/downloads.cgi)已经包含了 HttpMime。

    4.2 HttpClient抓取网页流程

    使用HttpClient发送请求、接收响应:

    1. 创建HttpClient对象。
    2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;发送POST请求,创建HttpPost对象。
    3. 需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,可调用setEntity(HttpEntity entity)方法来设置请求参数。
    4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
    5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
    6. 释放连接。

    4.3 HttpClient Demo

    import java.io.IOException;
    
    import org.apache.http.HttpHost;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.conn.params.ConnRouteParams;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.params.CoreConnectionPNames;
    import org.apache.http.util.EntityUtils;
    
    public class MyHttpClient {
    	/***
    	 * 需求:使用httpClient爬取传智播客官方网站数据
    	 * @param args
    	 * @throws Exception 
    	 * @throws ClientProtocolException 
    	 */
    	public static void main(String[] args) throws Exception {
    		
    		//创建HttpClient对象
    		HttpClient hClient = new DefaultHttpClient();
    		
    		//设置响应时间,设置传智源码时间,设置代理服务器
    		hClient.getParams().
    		setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000)
    		.setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000)
    		.setParameter(ConnRouteParams.DEFAULT_PROXY, new HttpHost("123.151.202.211", 808));
    		
    		//爬虫URL大部分都是get请求,创建get请求对象
    		HttpGet hget = new HttpGet("http://www.baidu.com/");		
    		//向传智播客官方网站发送请求,获取网页源码
    		HttpResponse response = hClient.execute(hget);
    		//EntityUtils工具类把网页实体转换成字符串
    		String content = EntityUtils.toString(response.getEntity(), "utf-8");
    		System.out.println(content);
    	}
    }
    

    4.4 Jsoup 简介

    soup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。

    它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

    通常在写爬虫程序时,httpClient集合Jsoup共同使用即可实现完美的爬虫系统。

    httpClient负责模拟浏览器发送请求,Jsoup负责解析httpClient请求返回的HTML页面,解析获取需要的数据

    4.5 Jsoup获取网页流程

    1. 从 URL,文件或字符串中解析 HTML;
    2. 使用 DOM 或 CSS 选择器来查找、取出数据;
    3. 可操作 HTML 元素、属性、文本;

    4.6 Jsoup Demo

    import java.io.IOException;
    
    import org.jsoup.Connection;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    
    public class MyJsoup {
    	/*
    	 * 使用Jsoup解析网页源码
    	 */
    	public static void main(String[] args) throws Exception {
    		//使用jsoup向服务器发送请求
    		Document doc = Jsoup.connect("http://www.baidu.com").get();
    		//Jsoup使用类型css,Jquery选择器方式获取元素节点
    		//Elements elements = doc.getElementsByTag("a");
    		//System.out.println(elements.text());
    		Elements elements = doc.select("ul.nav a");
    		//循环元素
    		for (Element element : elements) {
    			System.out.println(element.text()+":"+element.attr("href"));
    		}
    	}
    }
    
    展开全文
  • python爬虫环境与爬虫简介 认识爬虫 浏览网页基本流程 网络爬虫模拟了浏览器去发送请求并且返回响应结果的一个过程。 爬虫概念 网络爬虫也被称为网络蜘蛛、网络机器人,是一个自动下载网页的计算机程序或自动化...

    python网络爬虫

    python爬虫环境与爬虫简介

    认识爬虫

    1. 浏览网页基本流程

    在这里插入图片描述
    网络爬虫模拟了浏览器去发送请求并且返回响应结果的一个过程。

    1. 爬虫概念
      网络爬虫也被称为网络蜘蛛、网络机器人,是一个自动下载网页的计算机程序或自动化脚本。
      网络爬虫就像一只蜘蛛一样在互联网上沿着URL的丝线爬行,下载每一个URL所指向的网页,分析页面内容。

    2. 爬虫的原理
      (1)通用网络爬虫
      通用网络爬虫又称为全网爬虫,其爬行对象由一批种子URL扩充至整个Web,该类爬虫比较适合为搜索引擎搜索广泛的主题,主要由搜索引擎或大型Web服务提供商使用。

      深度优先策略:按照深度由低到高的顺序,依次访问下一级网页链接,直到无法再深入为止。

      广度优先策略:按照网页内容目录层次的深浅来爬行,优先爬取较浅层次的页面。当同一层中的页面全部爬行完毕后,爬虫再深入下一层。

      全网爬虫一般成本较高,范围较大。
      (2)聚焦网络爬虫
      聚焦网络爬虫又被称作主题网络爬虫,其最大的特点是只选择性地爬行与预设的主题相关的页面。

      基于内容评价的爬行策略:该种策略将用户输入的查询词作为主题,包含查询词的页面被视为与主题相关的页面。

      基于链接结构评价的爬行策略:该种策略将包含很多结构信息的半结构化文档Web页面用来评价链接的重要性,其中一种广泛使用的算法为PageRank算法

      基于增强学习的爬行策略:该种策略将增强学习引入聚焦爬虫,利用贝叶斯分类器对超链接进行分类,计算出每个链接的重要性,按照重要性决定链接的访问顺序。

      基于语境图的爬行策略:该种策略通过建立语境图学习网页之间的相关度,计算当前页面到相关页面的距离,距离越近的页面中的链接优先访问。

      (3)增量式网络爬虫
      增量式网络爬虫只对已下载网页采取增量式更新或只爬行新产生的及已经发生变化的网页,需要通过重新访问网页对本地页面进行更新,从而保持本地集中存储的页面为最新页面。
      常用的更新方法如下。

      统一更新法:以相同的频率访问所有网页,不受网页本身的改变频率的影响。

      个体更新法:根据个体网页的改变频率来决定重新访问各页面的频率。

      基于分类的更新法:爬虫按照网页变化频率分为更新较快和更新较慢的网页类别,分别设定不同的频率来访问这两类网页。

      具体应用哪一种更新方法还要视个人要求而定。

    3. 爬虫的合法性

      目前,多数网站允许将爬虫爬取的数据用于个人使用或者科学研究。但如果将爬取的数据用于其他用途,尤其是转载或者商业用途,严重的将会触犯法律或者引起民事纠纷。
      以下两种数据是不能爬取的,更不能用于商业用途。

      个人隐私数据:如姓名、手机号码、年龄、血型、婚姻情况等,爬取此类数据将会触犯个人信息保护法。

      明确禁止他人访问的数据:例如用户设置了账号密码等权限控制,进行了加密的内容。

      还需注意版权相关问题,有作者署名的受版权保护的内容不允许爬取后随意转载或用于商业用途。所以爬虫要慎重使用。

    4. robots协议

      robots协议也称作爬虫协议、机器人协议,它的全名叫作网络爬虫排除标准(Robots Exclusion Protocol ),当使用一个爬虫爬取一个网站的数据时,需要遵守网站所有者针对所有爬虫所制定的协议。
      它通常是一个叫作robots.txt的文本文件,该协议通常存放在网站根目录下,里面规定了此网站哪些内容可以被爬虫获取,及哪些网页是不允许爬虫获取的。
      (1)robots.txt的样例
      User-agent: *
      Disallow : / (你不能爬取的目录)
      Allow: /public/ (可以爬取)

      这实现了对所有搜索爬虫只允许爬取public目录的功能,将上述内容保存成robots.txt文件,放在网站的根目录下,和网站的入口文件(比如index.php、index.html和index.jsp等)放在一起。

      上面的User-agent描述了搜索爬虫的名称,这里将其设置为*则代表该协议对任何爬取爬虫有效。比如,我们可以设置:User-agent: Baiduspider。这就代表我们设置的规则对百度爬虫是有效的。如果有多条User-agent记录,则就会有多个爬虫会受到爬取限制,但至少需要指定一条。Disallow 指定了不允许抓取的目录,比如上例子中设置为/则代表不允许抓取所有页面。Allow一般和Disallow一起使用,一般不会单独使用,用来排除某些限制。现在我们设震为/public/,则表示所有页面不允许抓取,但可以抓取public目录。

    禁止所有爬虫访问任何目录的代码

    User-agent:*
    Disallow:/
    

    允许所有爬虫访问任何目录的代码

    User-agent:*
    Allow: /public/
    

    禁止所有爬虫访问网站某些目录的代码如下

    User-agent: * 
    Disallow: /private/ 
    Disallow: /tmp/
    

    只允许某一个爬虫访问的代码如下

    User-agent: WebCrawler
    Disallow: 
    User-agent: * 
    Disallow: /
    

    (2)robotparser 模块

    了解 Robots 协议之后,我们就可以使用robotparser模块来解析robots.txt了。 该模块提供了一个类RobotFileParser,它可以根据某网站的robots.txt文件来判断一个爬取爬虫是否有权限来爬取这个网页。

    该类用起来非常简单,只需要在构造方法里传入robots.txt的链接即可。 首先看一下它的声明:urllib.robotparser.RobotFileParser(url=’’),当然也可以在声明时不传入,默认为空,最后再使用 set_url()方法设置一下也可。

    下面列刷了这个类常用的几个方法

    set_url():用来设置robots.txt文件的链接。 如果在创建RobotFileParser对象时传入了链接,那么就不需要再使用这个方法设置了。

    read():读取robots.txt文件并进行分析。 注意,这个方法执行一个读取和分析操作,如果不调用这个方法, 接下来的判断都会为False,所以一定记得调用这个方法。 这个方法不会返 回任何内容,但是执行了读取操作。

    parse():用来解析robots.txt文件,传人的参数是robots.txt某些行的内容,它会按照robots.txt的语法规则来分析这些内容。

    can_fetch():该方法传入两个参数, 第一个是User-agent,第二个是要抓取的URL。 返回的内容是该搜索引擎是否可以抓取这个URL,返回结果是True或False。

    mtime():返回的是上次抓取和分析robots.txt的时间,这对于长时间分析和抓取的搜索爬虫是很有必要的,你可能需要定期检查来抓取最新的robots.txt。

    modified() :它同样对长时间分析和抓取的搜索爬虫很有帮助,将当前时间设置为上次抓取 和分析robots.txt的时间。

    认识反爬虫

    1. 网站反爬虫的目的和手段
      (1)通过User-Agent校验反爬
      浏览器在发送请求的时候,会附带一部分浏览器及当前系统环境的参数给服务器,服务器会通过User-Agent的值来区分不同的浏览器。
      在这里插入图片描述
      (2)通过访问频度反爬

      普通用户通过浏览器访问网站的速度相对爬虫而言要慢的多,所以不少网站会利用这一点对访问频度设定一个阈值,如果一个IP单位时间内访问频度超过了预设的阈值,将会对该IP做出访问限制。

      通常需要经过验证码验证后才能继续正常访问,严重的甚至会禁止该IP访问网站一段时间。

      (3)通过验证码校验反爬
      有部分网站不论访问频度如何,一定要来访者输入验证码才能继续操作。例如12306网站,不管是登陆还是购票,全部需要验证验证码,与访问频度无关。
      (4)通过改变网页结构反爬
      一些社交网站常常会更换网页结构,而爬虫大部分情况下都需要通过网页结构来解析需要的数据,所以这种做法也能起到反爬虫的作用。在网页结构变换后,爬虫往往无法在原本的网页位置找到原本需要的内容。
      在这里插入图片描述
      (5)通过账号权限反爬
      部分网站需要登录才能继续操作,这部分网站虽然并不是为了反爬虫才要求登录操作,但确实起到了反爬虫的作用。
      例如微博查看评论就需要登录账号。

    2. 爬取策略制定

    发送模拟User-Agent:通过发送模拟User-Agent来通过检验,将要发送至网站服务器的请求的User-Agent值伪装成一般用户登录网站时使用的User-Agent值。

    调整访问频度:通过备用IP测试网站的访问频率阈值,然后设置访问频率比阈值略低。这种方法既能保证爬取的稳定性,又能使效率又不至于过于低下。

    通过验证码校验:使用IP代理,更换爬虫IP;通过算法识别验证码;使用cookie绕过验证码。

    应对网站结构变化:只爬取一次时,在其网站结构调整之前,将需要的数据全部爬取下来;使用脚本对网站结构进行监测,结构变化时,发出告警并及时停止爬虫。

    通过账号权限限制:通过模拟登录的方法进行规避,往往也需要通过验证码检验。

    通过代理IP规避:通过代理进行IP更换可有效规避网站检测,需注意公用IP代理池是网站重点监测对象。

    配置python爬虫环境

    1. python爬虫相关库介绍与配置
      目前Python爬虫相关库,按照库的功能,整理如下。
    类型库名简介
    通用urllibPython内置的HTTP请求库,提供一系列用于操作URL的功能
    通用requests基于urllib,采用Apache2 Licensed开源协议的HTTP库
    通用urllib 3提供很多Python标准库里所没有的重要特性:线程安全,连接池,客户端SSL/TLS验证,文件分部编码上传,协助处理重复请求和HTTP重定位,支持压缩编码,支持HTTP和SOCKS代理,100%测试覆盖率
    框架scrapy一个为了爬取网站数据,提取结构性数据而编写的
    HTML/XML解析器lxmlc语言编写高效HTML/XML处理库。支持XPath
    HTML/XML解析器BeautifulSoup 4纯Python实现的HTML/XML处理库,效率相对较高
    展开全文
  • Scrapy网络爬虫简介

    2021-01-07 03:46:32
    Scrapy 的整体架构由 Scrapy 引擎(ScrapyEngine)、调度器(Scheduler)、下载器(Downloader)、爬虫(Spiders)和数据项管道(itemPipeline)5 个组件组成。图 1 展示了各个组件的交互关系和系统中的数据流。 图...
  • 爬虫系列(一) 网络爬虫简介

    万次阅读 多人点赞 2018-08-09 17:45:00
    写在前面的话:最近博主在学习网络爬虫的相关技术(基于 Python 语言),作为一个学习的总结,打算用博客记录下来,也希望和大家分享一下自己在学习过程中的点点滴滴,话不多说,让我们马上开始吧

    写在前面的话 :最近博主在学习网络爬虫的相关技术(基于 Python 语言),作为一个学习的总结,打算用博客记录下来,也希望和大家分享一下自己在学习过程中的点点滴滴,话不多说,让我们马上开始吧

    一、爬虫基本简介

    什么是网络爬虫,这里先引用一下 百度百科 上的解析:

    网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本

    说起网络爬虫,人们常常会用这样一个比喻:如果把互联网比喻成一张网,那么网络爬虫就可以认为是一个在网上爬来爬去的小虫子,它通过网页的链接地址来寻找网页,通过特定的搜索算法来确定路线,通常从网站的某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有网页都抓取完为止

    二、爬虫基本原理

    下面的图片很好的展现了一般网络爬虫的基本过程,下面让我们来详细解释一下这张图片的含义吧

    在这里插入图片描述

    1、发送请求

    爬虫的第一个步骤就是对起始 URL 发送请求,以获取其返回的响应

    值得注意的是,发送请求实质上是指发送请求报文的过程

    请求报文 包括以下四个方面:请求行、请求头、空行和请求体

    在这里插入图片描述

    但是,往往在使用 Python 相关的网络请求库发送请求时,只需关注某些特殊的部分即可,而非完整的请求报文,下面我们将以粗体的形式标识出我们需要特别关注的部分

    (1)请求行

    请求行由请求方法、请求 URL 和 HTTP 协议版本 3 个字段组成,字段间使用空格分隔

    请求方法:请求方法是指对目标资源的操作方式,常见的有 GET 方法和 POST 方法

    • GET:从指定的资源请求数据,查询字符串包含在 URL 中发送
    • POST:向指定的资源提交要被处理的数据,查询字符串包含在请求体中发送

    请求 URL:请求 URL 是指目标网站的统一资源定位符 (Uniform Resource Locator,URL)

    ③ HTTP 协议版本:HTTP 协议是指通信双方在通信流程和内容格式上共同遵守的标准

    (2)请求头

    请求头 被认为是请求的配置信息,以下列举出常用的请求头信息(持续补充中)

    • User-Agent:包含发出请求的用户的信息,设置 User-Agent 常用于处理反爬虫
    • Cookie:包含先前请求的内容,设置 Cookie 常用于模拟登陆
    • Referer:指示请求的来源,用于可以防止链盗以及恶意请求

    (3)空行

    空行标志着请求头的结束

    (4)请求体

    请求体 根据不同的请求方法包含不同的内容

    若请求方法为 GET,则此项为空;若请求方法为 POST,则此项为待提交的数据(即表单数据)

    2、获取响应

    爬虫的第二个步骤就是获取特定 URL 返回的响应,以提取包含在其中的数据

    同样的,响应其实是指完整响应报文,它包括四个部分:响应行、响应头、空行和响应体

    在这里插入图片描述

    (1)响应行

    响应行由 HTTP 协议版本、状态码及其描述组成

    ① HTTP 协议版本:HTTP 协议是指通信双方在通信流程和内容格式上共同遵守的标准

    状态码及其描述

    • 100~199:信息,服务器收到请求,需要请求者继续执行操作
    • 200~299:成功,操作被成功接收并处理
    • 300~399:重定向,需要进一步的操作以完成请求
    • 400~499:客户端错误,请求包含语法错误或无法完成请求
    • 500~599:服务器错误,服务器在处理请求的过程中发生错误

    (2)响应头

    响应头 用于描述服务器和数据的基本信息,以下列举出常用的响应头信息(持续补充中)

    • Set-Cookie:设置浏览器 Cookie,以后当浏览器访问符合条件的 URL 时,会自动带上该 Cooike

    (3)空行

    空行标志着响应头的结束

    (4)响应体

    响应体 就是网站返回的数据,在下一个步骤中我们需要对其进行分析处理

    3、解析网页

    解析网页实质上需要完成两件事情,一是提取网页上的链接,二是提取网页上的资源

    (1)提取链接

    提取链接实质上是指获取存在于待解析网页上的其他网页的链接

    网络爬虫需要给这些链接发送请求,如此循环,直至把特定网站全部抓取完毕为止

    (2)提取资源

    提取数据则是爬虫的目的,常见的数据类型如下:

    • 文本:HTML,JSON 等
    • 图片:JPG,GIF,PNG 等
    • 视频:MPEG-1、MPEG-2 和 MPEG4,AVI 等

    最终,我们可以对所获得的资源作进一步的处理,从而提取出有价值的信息

    展开全文
  • 爬虫基础简介
  • 网络爬虫简介

    2020-08-26 09:02:34
    网络爬虫简介 一、什么是爬虫 爬虫:爬虫就是模拟浏览器进行获取数据 网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种 (1)、通用爬虫 将互联网上的网页下载到本地,形成一个互联网内容的镜像备份 1、抓取网页: 网络...
  • 第1章 Python爬虫环境与爬虫简介 教案 课程名称Python网络爬虫技术 课程类别必修 适用专业大数据技术类相关专业 总学时32学时其中理论14学时实验18学时 总学分2.0学分 本章学时2学时 材料清单 Python网络爬虫技术...
  • 【Python爬虫1】网络爬虫简介

    千次阅读 2017-02-17 12:43:40
    第一个网络爬虫 1 下载网页 重试下载 设置用户代理user_agent 2 爬取网站地图 3 遍历每个网页的数据库ID 4 跟踪网页链接 高级功能 解析robotstxt 支持代理Proxy 下载限速 避免爬虫陷阱 最终版本
  • 01 Python爬虫环境与爬虫简介 内容:爬虫的定义 + 网络爬虫的类别 + 获取到内容的合法性的讨论 本章对爬虫及反爬虫进行了一个基本概述,同时简要介绍了Python爬虫环境,对本章内容做小结如下。 爬虫是一种可以自动...
  • ②用Python做爬虫就相对简单,因为它⽀持模块多、代码简介、开发效率⾼ (scrapy框架),只要少量代码就可批量抓取数据,丰富的第三方库为他提供了很多遍历 ③用PHP对多线程、异步⽀持不太好 ④用C/C++做爬虫代码量⼤...
  • Scrapy爬虫简介

    2019-01-05 17:17:59
    Spider是所有爬虫的基类,所有的爬虫必须继承该类或其子类,用来发送请求及解析网页 爬虫执行流程 1、调用start_requests()方法发送请求,并指定响应的回调函数,默认为parse 2、在parse中解析响应,从网页中提取...
  • Python爬虫简介

    2019-03-06 21:37:07
    一、什么是爬虫网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动...
  • 网络爬虫就是通过计算机程序来模拟人类利用浏览器浏览网页的行为来获取所需的信息的行为。这样可以节省人力和避免信息的遗漏,比较贴近的估计就是在网络上寻找电影资源了。我们都尝试过需要一些老的电影的资源,一般...
  • Java 爬虫项目实战之爬虫简介

    千次阅读 2018-11-24 21:23:50
    Java 爬虫项目实战之爬虫简介 0. 前言 今年三四月份学习Hbase,了解到openTSDB的底层存储使用到了Hbase,于是乎,学习openTSDB,在阅读openTSDB源码【其源码使用java编写】的过程中, 发现里面全是I/O,多线程,...
  • python网课学习(自学,研究使用,勿传)
  • 一、爬虫前导知识 1.端口 1、打开命令窗口,输入命令:netstat -ano 查找所有运行的端口 2、查看被占用端口对应的 PID 输入命令:netstat -aon|findstr “3306” 回车执行该命令,最后一位数字就是 PID, 这里是 1968...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,625
精华内容 10,650
关键字:

爬虫简介

爬虫 订阅