python爬虫的原理介绍

本文介绍了爬虫相关知识。阐述做爬虫的原因,指出可解决数据获取难题。解释爬虫是模拟人类请求网站的程序,还说明了使用爬虫需学习的内容。介绍了通用、聚焦等爬虫种类,重点讲解通用搜索引擎工作原理,包括抓取网页、数据存储、预处理和提供检索服务等步骤,也提及了其局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、爬虫与数据

(一)为什么要做爬虫

都说现在是大数据时代,但是与之相对应的问题是,大数据中的数据从何而来。可以人工收集数据,但是人工收集数据的效率却免不了太过低下。也可以找一些专门从事数据服务的公司进行购买,但会花费不菲的代价。下面是经常用到的一些数据类的网站。
1、 企业产生的用户数据:
百度指数: http://index.baidu.com/
阿里指数: https://alizs.taobao.com/
TBI 腾讯浏览指数: http://tbi.tencent.com/
新浪微博指数: http://data.weibo.com/index
2、 数据平台购买数据:
数据堂: http://www.datatang.com/about/about-us.html
国云数据市场: http://www.moojnn.com/data-market/
贵阳大数据交易所: http://trade.gbdex.com/trade.web/index.jsp
3、 政府/机构公开的数据:
中华人民共和国国家统计局数据: http://data.stats.gov.cn/index.htm
世界银行公开数据: http://data.worldbank.org.cn/
联合国数据: http://data.un.org/
纳斯达克: http://www.nasdaq.com/zh
4、 数据管理咨询公司:
INS(500 人, 一年产值 300 亿)
麦肯锡: http://www.mckinsey.com.cn/
埃森哲: https://www.accenture.com/cn-zh/
艾瑞咨询: http://www.iresearch.com.cn/
或者可以选择招聘/做一名爬虫工程,自己动手寻找数据。

(二)爬虫是什么

通俗理解:爬虫是一个模拟人类请求网站行为的程序。可以自动请求网页、并数据抓取下来,然后使用一定的规则提取有价值的数据。
专业解释:网络爬虫

(三)我们需要学习什么来使用爬虫

  1. Python 基础语法学习(基础知识)
  2. HTML 页面的内容抓取(数据抓取)
  3. HTML 页面的数据提取(数据清洗)
  4. Scrapy 框架以及 scrapy-redis 分布式策略(第三方框架)
  5. 爬虫(Spider)、 反爬虫(Anti-Spider)、 反反爬虫(Anti-Anti-Spider)之间的斗争…

三、爬虫的种类

网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫(General Purpose Web Crawler)、聚焦网络爬虫(Focused Web Crawler)、增量式网络爬虫(Incremental Web Crawler)、深层网络爬虫(Deep Web Crawler)。 实际的网络爬虫系统通常是几种爬虫技术相结合实现的。
(一) 通用爬虫
通用网络爬虫是捜索引擎抓取系统(Baidu、 Google、 Yahoo 等) 的重要组成部分。 主要目的是将互联网上的网页下载到本地, 形成一个互联网内容的镜像备份。
(二) 通用搜索引擎(Search Engine) 工作原理
通用网络爬虫 从互联网中搜集网页, 采集信息, 这些网页信息用于为搜索引擎建立索引从而提供支持, 它决定着整个引擎系统的内容是否丰富, 信息是否即时, 因此其性能的优劣直接影响着搜索引擎的效果。
第一步: 抓取网页
搜索引擎网络爬虫的基本工作流程如下:
首先选取一部分的种子 URL, 将这些 URL 放入待抓取 URL 队列;
取出待抓取 URL, 解析 DNS 得到主机的 IP, 并将 URL 对应的网页下载下来, 存储进已下载网页库中, 并且将这些 URL 放进已抓取 URL 队列。
分析已抓取 URL 队列中的 URL, 分析其中的其他 URL, 并且将 URL 放入待抓取 URL队列, 从而进入下一个循环…
在这里插入图片描述

那么, 搜索引擎如何获取一个新网站的 URL:
(1) 新网站向搜索引擎主动提交网址:(如百度 http://zhanzhang.baidu.com/linksubmit/url)
(2) 在其他网站上设置新网站外链(尽可能处于搜索引擎爬虫爬取范围)
(3) 搜索引擎和 DNS 解析服务商(如 DNSPod 等) 合作, 新网站域名将被迅速抓取。
但是搜索引擎蜘蛛的爬行是被输入了一定的规则的, 它需要遵从一些命令或文件的内
容, 如标注为 nofollow 的链接, 或者是 Robots 协议。
Robots 协议(也叫爬虫协议、 机器人协议等) , 全称是“网络爬虫排除标准”(Robots Exclusion Protocol) , 网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取, 哪些页面不能抓取, 例如:
淘宝网: https://www.taobao.com/robots.txt
腾讯网: http://www.qq.com/robots.txt

第二步: 数据存储
搜索引擎通过爬虫爬取到的网页, 将数据存入原始页面数据库。 其中的页面数据与用户浏览器得到的 HTML 是完全一样的。
搜索引擎蜘蛛在抓取页面时, 也做一定的重复内容检测, 一旦遇到访问权重很低的网站上有大量抄袭、 采集或者复制的内容, 很可能就不再爬行。

第三步: 预处理
搜索引擎将爬虫抓取回来的页面, 进行各种步骤的预处理。
提取文字
中文分词
消除噪音(比如版权声明文字、 导航条、 广告等……)
索引处理
链接关系计算
特殊文件处理
···
除了 HTML 文件外, 搜索引擎通常还能抓取和索引以文字为基础的多种文件类型, 如
PDF、 Word、 WPS、 XLS、 PPT、 TXT 文件等。 我们在搜索结果中也经常会看到这些文件类型。
但搜索引擎还不能处理图片、 视频、 Flash 这类非文字内容, 也不能执行脚本和程序。

第四步: 提供检索服务, 网站排名
搜索引擎在对信息进行组织和处理后, 为用户提供关键字检索服务, 将用户检索相关的信息展示给用户。
同时会根据页面的 PageRank 值(链接的访问量排名) 来进行网站排名, 这样 Rank 值高的网站在搜索结果中会排名较前, 当然也可以直接使用 Money 购买搜索引擎网站排名,简单粗暴。
在这里插入图片描述
(三) 通用性搜索引擎存在一定的局限性:
通用搜索引擎所返回的结果都是网页, 而大多情况下, 网页里 90%的内容对用户来说
都是无用的。不同领域、 不同背景的用户往往具有不同的检索目的和需求, 搜索引擎无法提供针对具体某个用户的搜索结果。
万维网数据形式的丰富和网络技术的不断发展, 图片、 数据库、 音频、 视频多媒体等不同数据大量出现, 通用搜索引擎对这些文件无能为力, 不能很好地发现和获取。
通用搜索引擎大多提供基于关键字的检索, 难以支持根据语义信息提出的查询, 无法准确理解用户的具体需求。
针对这些情况, 聚焦爬虫技术得以广泛使用。
(四) 聚焦爬虫
聚焦爬虫, 是"面向特定主题需求"的一种网络爬虫程序, 它与通用搜索引擎爬虫的区别在于: 聚焦爬虫在实施网页抓取时会对内容进行处理筛选, 尽量保证只抓取与需求相关的网页信息。

想要使用爬虫,还需要了解有关HTTP协议的详细内容。
可以移步另一篇文章
HTTP协议详解

### Python 爬虫工作原理与基础介绍 #### 什么是Python爬虫Python爬虫是一种自动化工具,用于从互联网上抓取数据并将其存储以便进一步处理。通过模拟浏览器行为发送HTTP请求获取网页内容,并解析这些内容提取所需的信息。 #### 工作流程概述 1. **发起请求**:向目标网站服务器发出HTTP/HTTPS协议的GET或POST请求来获取页面HTML源代码。 2. **接收响应**:接收到Web服务器返回的数据流后进行初步处理,通常会得到整个网页的内容作为字符串形式存在内存里。 3. **分析结构化文档对象模型 (DOM)** :利用BeautifulSoup、lxml等第三方库将上述获得的html文本转换成易于操作的对象树状结构;也可以采用正则表达式匹配特定模式完成简单的抽取任务。 4. **提取有用信息**:依据需求定位至具体标签节点下读取出想要保存下来的字段值,比如链接地址、图片路径或是纯文字描述等等。 5. **持久化存储**:最后一步便是把之前挑选出来的有效载荷写入文件系统内(CSV, JSON)、数据库(MySQL, MongoDB)或者其他任何形式适合长期保持的地方[^1]。 #### 常见使用的库 - `requests` 或者更高级别的异步版本如 `aiohttp` 来简化网络通信过程中的繁杂细节; - 解析器方面有功能强大且易用性强的选择像 BeautifulSoup 和 lxml ,它们可以方便地遍历 HTML/XML 文档查找感兴趣的元素; - 对于动态加载内容较多的情况,则可能需要用到 Selenium 这样的无头浏览器驱动程序去执行 JavaScript 脚本渲染完整的 DOM 结构再做后续动作[^2]。 ```python import requests from bs4 import BeautifulSoup url = 'https://example.com' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') title = soup.find('h1').get_text() print(title) ``` #### 实战注意事项 当构建实际项目时需要注意遵守robots.txt规则以及合理设置访问频率以免给对方造成过大压力甚至被封禁IP等问题发生。另外还要考虑异常情况下的容错机制设计以确保程序稳定运行[^3]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值