热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

01小白学Python爬虫之爬虫概念、分类、原理及连载规划

前言小到出门扯淡,大到国家政策,无一例外,比较常见的三个字”大数据”,处处表示着已经进入大数据时代,那在大数据时代,最重要的是什么呢?毫无疑问,数据!而数据又是怎么来的呢?下面简单

前言

小到出门扯淡,大到国家政策,无一例外,比较常见的三个字”大数据”,处处表示着已经进入大数据时代,那在大数据时代,最重要的是什么呢?毫无疑问,数据!而数据又是怎么来的呢?下面简单列一下:

  • 企业生产的用户数据
    • 比如像BAT等公司,拥有庞大的用户群体,用户的任何行为都会成为他们数据源的一部分
  • 数据平台购买数据
    • 比如从国家数据中心 数据市场等购买
  • 政府 机构公开数据
    • 比如统计局 银行公开数据等
  • 数据管理公司
    • 比如艾瑞咨询等
  • 爬虫获取网络数据
    • 通过网络爬虫技术,爬去网络数据,以供使用

概念

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。(以上概念来自百度百科)

简而言之 就是通过程序去网络上抓取自己想要的数据信息。

爬虫分类

通用网络爬虫

概念

搜索引擎用的爬虫系统

目标

尽可能把互联网上网页下载下来,放到自有服务器形成备份,再对这些网页做提取关键字等处理,对外提供用户检索接口

抓取流程
  1. 选择目标URL,放入待爬取队列
  2. 从队列中取出URL,解析DNS得到主机IP,接着去IP对应的服务器中下载HTML,保存到本地服务器,将此URL放入已爬取队列
  3. 分析网页内容,根据需求查找网页内其他URL,继续执行第二步,直至爬取条件结束

一句话:取网页–>存储数据–>内容处理–>提供检索

缺点
  1. 只能提供和文本相关内容,不能提供多媒体和二进制文件等
  2. 提供的结果不具有特殊性,不能针对不同背景领域的人提供不同的搜索结果
  3. 不能理解为人类语义上的检索
爬行策略
  1. 深度优先
    • 按照深度由低到高的顺序,依次访问下一级网页链接,直到不能再深入为止
  2. 广度优先
    • 按照网页内容目录层次深浅来爬行页面,处于较浅目录层次的页面首先被爬行

聚焦网络爬虫

概念

又称主题网络爬虫,选择性的爬取与预先定义好的主题相关方面的爬虫。

优势
  • 只爬取与主题相关的页面,极大的节省了硬件和网络资源
  • 保存页面少,更新快
  • 更好的满足特定人群对特定领域信息需求
其它

同通用网络爬虫

爬虫应用示例

  • 抓取社交网站妹纸信息
  • 抓取网络视频数据
  • 抓取网络小说 段子等信息
  • 只要能通过浏览器访问,都可以get到

连载规划

如何抓取HTML页面

  • HTTP请求处理
  • urllib requests等模拟浏览器发送请求

解析服务器响应内容

  • re xpath bs4 jsonpath pyquery等使用
  • 对需要提取数据定义匹配规则,来匹配筛选出目标内容

采集动态HTML,验证码处理

  • 通用的动态页面采集:Selenium+PhantomJS(无界面),模拟真实浏览器加载js ajax等非静态页面数据
  • Tesseract:机器学习库,机器图像识别系统,可以处理简单的验证码,复杂的可以通过手动输入或专门的打码平台

Scrapy框架(Scrapy Pyspider)

  • 高定制性 高性能,异步网络框架twisted,下载数据速度快
  • 提供数据存储 下载 提取规则等组件

分布式策略(scrapy-redis)

  • scrapy-redis,在scrapy基础上添加了一套以Redis数据库为核心的组件
  • 让Scrapy框架支持分布式功能,在Redis中做请求指纹去重 请求分配 数据临时存储等

结语

学习和记录的过程是漫长而枯燥的,从现在起,打满鸡血,时刻督促提醒自己,希望能够坚持到底。最后一句话,与君共勉–>路漫漫其修远兮,吾将上下而求索~


推荐阅读
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 建立分类感知器二元模型对样本数据进行分类
    本文介绍了建立分类感知器二元模型对样本数据进行分类的方法。通过建立线性模型,使用最小二乘、Logistic回归等方法进行建模,考虑到可能性的大小等因素。通过极大似然估计求得分类器的参数,使用牛顿-拉菲森迭代方法求解方程组。同时介绍了梯度上升算法和牛顿迭代的收敛速度比较。最后给出了公式法和logistic regression的实现示例。 ... [详细]
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
author-avatar
mobiledu2502875617
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有