Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我
所有文章 外链

Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我

精通Python网络爬虫-第三章-网络爬虫实现原理与实现技术

阅读数:次 2017-06-25
字数统计: 879字   |   阅读时长≈ 3分

本章主要内容:网络爬虫的实现原理与实现技术;metaseeker爬虫案例。

3.1 网络爬虫实现原理详解

爬虫类型多样,但原理相近;以通用网络爬虫和聚焦网络爬虫为例。

1.通用网络爬虫

图3-1 通用网络爬虫实现原理及过程
图3-1 通用网络爬虫实现原理及过程

注意停止条件的设置,以免无限循环下去。

2.聚焦网络爬虫

图3-2 聚焦网络爬虫的基本原理及实现过程

比通用网络爬虫多三步:1.目标的定义、4.无关链接的过滤、6.下一步要爬取的URL地址的选取。

第6步中涉及到搜索算法,聚焦网络爬虫因其目的性,爬取顺序对执行效率影响巨大,所以根据搜索策略确定下一步要爬取哪些URL地址。

3.2 爬行策略

解决先爬取哪个,后爬取哪个的问题。

主要爬行策略有:深度优先策略、广度优先策略、大站优先策略、反链策略等。

重点介绍深度和广度优先策略:

图3-3 某网站的网页层次结构示意图
图3-3 某网站的网页层次结构示意图

如采用深度优先策略:A->D->E->B->C->F->G;如采用广度优先策略:A->B->C->D->E->F->G。

3.3 网页更新策略

网页何时更新,更新的频率怎么决定?

常见更新策略3种:用户体验策略、历史数据策略、聚类分析策略。

前两者都需要历史数据作为支撑;后者则是新网页的分析策略。

聚类分析策略:依据网页的共性,将共性较多的网页聚为一类,类的数目不一定,然后在单个聚类中抽样分析得出该聚类的更新频率,即得出爬取频率。(物以类聚)

图3-4 网页更新策略之聚类算法

3.4 网页分析算法

爬虫爬取数据后,存储到原始数据库中,搜索引擎分析确定各网页的重要性,从而影响用户检索的排名结果。

3种:基于用户行为、网络拓扑、网页内容的网页分析算法

拓扑:结构关系。

3.5 身份识别

爬虫爬取网站时会告诉站长其身份,管理员通过这个身份对爬虫的身份进行识别,这个过程就是身份识别过程。

一般是通过HTTP请求中的User Agent字段发送身份信息。

网站下有一个文件叫Robots.txt,该文件规定了该网站可以爬取的范围。我们都应该遵守这份网络规则,不应该无限制的任意爬取,这样才是爬虫方和站点服务方的双赢。

3.6 网络爬虫技术实现

大部分语言都可以实现网络爬虫,有的框架丰富,多行程能力强,简单易学、代码简介,如Python;

有的适合大型爬虫项目,如Java;

有的支持高并发与多线程,如NodeJS和Go;

有的运算速度快,适合大项目,但成本高,如C++;

有的并发能力不足,如PHP。

都可实现,根据需求选择合适的语言,合适的框架,最大程度的降低开发难度,这样才是正道。

接下来会做一个实现,用metaseeker软件抓去当当网的信息。

  • 本文作者: Linking
  • 本文链接: https://linking.fun/2017/06/25/精通Python网络爬虫-第三章-网络爬虫实现原理与实现技术/
  • 版权声明: 版权所有,转载请注明出处!
  • Python
  • crawler
  • Python

扫一扫,分享到微信

高考志愿报考指南
精通Python网络爬虫-第二章-网络爬虫技能总览
  1. 1. 3.1 网络爬虫实现原理详解
    1. 1.1. 1.通用网络爬虫
    2. 1.2. 2.聚焦网络爬虫
  2. 2. 3.2 爬行策略
  3. 3. 3.3 网页更新策略
  4. 4. 3.4 网页分析算法
  5. 5. 3.5 身份识别
  6. 6. 3.6 网络爬虫技术实现
© 2015-2026 Linking
GitHub:hexo-theme-yilia-plus by Litten
本站总访问量次 | 本站访客数人
  • 所有文章
  • 外链

tag:

  • weather
  • 需求
  • essay
  • basketball
  • olympic
  • nginx
  • APPScan
  • SQl盲注
  • xss
  • Ajax
  • ajax
  • ai
  • agent
  • openclaw
  • ccf
  • Nginx
  • HTML5
  • html5
  • hmtl5
  • sse
  • JavaScriptCore
  • Oracle
  • operation
  • Linux
  • deploy
  • Mac Office
  • markdown
  • ListView
  • GridView
  • MySQL
  • 慢查询
  • mongodb
  • 转置
  • thought
  • network
  • ubuntu
  • NetworkManager
  • RFKill
  • Netplan
  • avatar
  • cocoa
  • blog
  • Gitalk
  • container
  • macvlan
  • docker
  • oracle
  • cookie
  • patch
  • gitea
  • git
  • iOS
  • https
  • 多线程
  • bundle
  • 兼容性
  • HTTP
  • 绘图
  • cs
  • java
  • 效率
  • 快捷键
  • route
  • nodejs
  • pip
  • arcgis
  • arcgis 建模
  • 标识
  • redis
  • read
  • bookList
  • running
  • showdoc
  • disk
  • unit-test
  • D.Wade
  • thoughts
  • duoduo
  • Python
  • python
  • tomcat
  • 读书节
  • session
  • jdk
  • war
  • 加班
  • Android onclick事件监听
  • 正则
  • 手机品牌匹配
  • ntp
  • OpenLayers
  • Geoserver
  • wechat
  • 微信公众号
  • 爬虫
  • WeChat
  • 张靓颖
  • 动漫
  • vpn
  • PPT
  • MarkDown
  • plan
  • 朱赟
  • 极客时间专栏
  • 极客邦
  • 模块化
  • MVC
  • excel
  • NBA
  • kobe
  • team
  • crawler
  • 进度条
  • ssl
  • book
  • anti-stealing-link
  • Agentic Engineering
  • Vibe Coding
  • Software 3.0
  • Andrej Karpathy
  • LLM
  • Programming

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • GitHub Trending
  • OpenAI ChatGPT
  • Gitee码云
  • 简书
  • CSDN