通俗的讲,网络爬虫到底是什么?

devtools/2025/1/23 10:32:50/

爬虫通俗来说就是抓取网页数据,比如说大家都喜欢的妹子图、小视频呀,还有电子书、文字评论、商品详情等等。

只要网页上有的,都可以通过爬虫爬取下来。

一般而言,python爬虫需要以下几步:

  1. 找到需要爬取内容的网页URL
  2. 打开该网页的检查页面(即查看HTML代码,按F12快捷键即可进入)
  3. 在HTML代码中找到你要提取的数据
  4. 写python代码进行网页请求、解析
  5. 存储数据

当然会撸python是前提,对于小白来说自学也不是件容易的事,需要花相当的时间去适应python的语法逻辑,而且要坚持亲手敲代码,不断练习。

如果对自己没有自信,也可以考虑看编程课程,跟着老师的节奏去学习,能比较快地掌握python语法体系,也能得到充分的案例练习。

在默认你已经有python基础的前提下,来说一说如何写代码进行网页请求、解析。

网页请求意思是把网页的HTML源码下载下来。

好了,接下来我们一步步按照套路把本问题的信息都爬下来!

一、找到需要爬取网页的URL

这个很容易,该问题的url:https://www.zhihu.com/question/21358581

我们需要爬取四个信息:

  • 问题描述
  • 问题补充
  • 关注者数
  • 被浏览数

二、打开该网页的检查页面

推荐使用chrome浏览器实践,会和本文操作同步。

打开本问题的网页:

按F12键进入开发者页面:

三、在HTML代码中找到你要提取的数据

点击开发者页面左上角的‘选择元素’箭头:

然后再点击网页上的问题描述,这时候开发者界面上出现HTML源码:

你想要的问题描述文字,就藏在html源码里:

我们要爬取的第一个信息已经找到,按照上面步骤,可以找到其它三个信息在html中的位置。

四、写python代码进行网页请求、解析

这一步可能是大家最最关心的,因为涉及到python代码。

其实这里对python的要求也仅限于你需要会数据类型、变量、运算符、函数、模块之类的简单语法。

因为我们会用到好几个第三方库,帮助我们完成网页请求、解析的工作,你需要做的是知道这些库的使用方法。

如果你对这个过程仍感迷惑,仍推荐先看这篇回答:

如何入门 Python 爬虫?1489 赞同 · 61 评论回答​编辑

Part 1

这里用到的用于网页请求的库是requests,一个非常流行的http请求库。

这里请求的是什么?不是原谅、也不是理解,而是网页的html信息。

服务器收到请求后,会返回相应的网页对象。

Requests库会自动解码来自服务器的内容,大多数 unicode 字符集都能被无缝地解码。

这一切requests都能妥妥地搞定。

我们来尝试下:

import requests
headers = {'User-Agent':你的浏览器headers}
# 传入url和请求头
r = requests.get('https://www.zhihu.com/question/21358581',headers=headers)
# 响应的内容
print(r.text)

我们会接收到服务器返回的页面,requests解析后,呈现下面这样子:

这就是我们需要的html源码呀!

接下来要做的就是从html中抽取我们需要的四个信息。

Part 2

通过网页请求,我们获取到响应的html文档,我们需要的东西都在这个文档里。

但是怎么去抽取信息呢?

XPath 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。

这里用到另一个有用的库xpath,xpath库可以让你轻松的使用XPath语言查找信息。

既然XPath是在XML文档中才能起作用,然而我们刚刚获取的html只是文本字符串。

所以需要把html文档转换为XPath可以解析的对象:lxml.etree._Element(xml/html文件树中的一个节点)。

接着上面代码:

# 将html文档转换为XPath可以解析的
s = etree.HTML(r.text)

Part 3

这下我们可以使用xpath库来进行信息的提取了。

xpath的使用方法这里不赘述了,大家可以网上搜搜资料,个半小时也能学会。

这里介绍一种简单的方法,你在开发者页面中找到对应信息的源码后,直接右键复制xpath地址:

但复制的xpath很有可能会导致获取的信息为空,所以我这里用标签的属性来获取对应文本。

接上面代码:

# 获取问题内容
q_content = s.xpath('//*[@class="QuestionHeader-title"]/text()')[0]
# 获取问题描述
q_describe = s.xpath('//*[@class="RichText ztext"]/text()')[0]
# 获取关注数和浏览量,这两个属性一样
q_number = s.xpath('//*[@class="NumberBoard-itemValue"]/text()')
concern_num = q_number[0]
browing_num = q_number[1]
# 打印
print('问题:',q_content,'\n','描述:',q_describe,'\n','关注数:',concern_num,'\n','浏览量:',browing_num)

最终呈现的结果:

全部代码:

import requests
from lxml import etree
headers = {'User-Agent':你的浏览器headers}
r = requests.get('https://www.zhihu.com/question/21358581',headers=headers)
s = etree.HTML(r.text)
# 获取问题内容
q_content = s.xpath('//*[@class="QuestionHeader-title"]/text()')[0]
# 获取问题描述
q_describe = s.xpath('//*[@class="RichText ztext"]/text()')[0]
# 获取关注数和浏览量,这两个属性一样
q_number = s.xpath('//*[@class="NumberBoard-itemValue"]/text()')
concern_num = q_number[0]
browing_num = q_number[1]
# 打印
print('问题:',q_content,'\n','描述:',q_describe,'\n','关注数:',concern_num,'\n','浏览量:',browing_num)

结论

好了,关于这个问题的信息已经通过python爬下来。

初学的小伙伴自己尝试再多爬些内容,练习requests和xpath的使用,爬虫也就能入门了。

对于小白来说自学也不是件容易的事,需要花相当的时间去适应python的语法逻辑,而且要坚持亲手敲代码,不断练习。

如果对自己没有自信,也可以考虑看编程课程,跟着老师的节奏去学习,能比较快地掌握python语法体系,也能得到充分的案例练习。

下面介绍几个我经常用的爬虫插件和工具,入门非常简单。

八爪鱼采集器

八爪鱼是一款面向非技术用户的桌面端爬虫软件,以其可视化操作和强大的模板库而受到青睐。

官网:https://affiliate.bazhuayu.com/zwjzht

「功能与特点:」

  • 可视化操作:无需编程基础,通过拖拽即可设计采集流程。
  • 海量模板:内置300+主流网站采集模板,简化参数设置过程。
  • 智能采集:集成多种人工智能算法,自动化处理复杂网站场景。
  • 自定义采集:支持文字、图片、文档、表格等多种文件类型的采集。
  • 云采集服务:提供5000台云服务器,实现24小时高效稳定采集。

「使用方法:」

  • 下载并安装八爪鱼采集器。
  • 输入待采集的网址,开启“浏览模式”选择具体内容。
  • 设计采集流程,创建采集任务。
  • 开启采集,并通过“显示网页”查看实时采集情况。
  • 导出采集数据,选择合适的文件格式进行保存。

亮数据(Bright Data)

亮数据是一款强大的数据采集工具,以其全球代理IP网络和强大数据采集技术而闻名。它能够轻松采集各种网页数据,包括产品信息、价格、评论和社交媒体数据等。

网站:https://get.brightdata.com/weijun

「功能与特点:」

  • 全球网络数据采集:提供一站式服务,将全网数据转化为结构化数据库。
  • 商用代理网络:拥有超过7200万个IP,覆盖195个国家,每日更新上百万IP。
  • 高效数据采集:能够达到170000请求/秒,每天处理高达1PT的网络流量。
  • 技术驱动:拥有超3300项授权专利申报,持续引领行业创新。
  • 稳定性:提供99.99%的稳定运行时间,即使在网络高峰期间也能保持稳定。

「使用方法:」

  • 注册亮数据账号。
  • 创建爬虫任务,选择合适的数据源和爬虫模板或编写爬虫代码。
  • 设置任务参数,包括采集规则和数据存储选项。
  • 启动任务,开始数据采集。

http://www.ppmy.cn/devtools/152859.html

相关文章

基于微信小程序的手机银行系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

NextJs - ServerAction获取文件并处理Excel

NextJs - ServerAction获取文件并处理Excel 一. 客户端二. ServerAction 处理 一. 客户端 use client; import { uploadExcel } from actions/batchInquirySystem/api; import type { UploadProps } from antd; import { Upload } from antd;/*** 创建问询内容*/ const Page …

Typescript 多个泛型参数详细解读

多个泛型参数的函数 : 函数中有多个泛型的参数。 示例&#xff1a; (() > {function getMsg<K, V>(value1: K, value2: V): [K, V] {return [value1, value2]}const arr1 getMsg<string,number>(jack,100.2345)console.log(arr1[0].split())console.log(arr1…

JavaScript —— 判断语句与循环语句

判断语句 JavaScript中的if-else语句与C、Python、Java中类似。 直接输出到控制台&#xff1a; test.html中的内容为&#xff1a; <script type"module">let score 90;if (score > 85) {console.log("A");} else if (score > 70) {console…

Pandas 数据分析(二)【股票数据】

股票数据分析 写在前面题目背景021 加载股票数据到CSV文件022 查看基本信息和数据统计023 更改索引列为普通数据列024 给数据添加月份和年份025 计算每年的平均收盘价026 找到收盘价最低的数据行027 筛选出部分数据列028 设置日期列为索引列029 删除不需要的数据列030 对数据列…

上位机工作感想-2024年工作总结和来年计划

随着工作年限的增增长&#xff0c;发现自己越来越不喜欢在博客里面写一些掺杂自己感想的东西了&#xff0c;或许是逐渐被工作逼得“成熟”了吧。2024年&#xff0c;学到了很多东西&#xff0c;做了很多项目&#xff0c;也帮别人解决了很多问题&#xff0c;唯独没有涨工资。来这…

Markdown Viewer 浏览器

GitCode - 全球开发者的开源社区,开源代码托管平台 Markdown Viewer 安装与配置完全指南-CSDN博客 Chrome安装Markdown Viewer 3.9插件_markdown viewer下载-CSDN博客 使用 火狐浏览器 Markdown Viewer – 下载 &#x1f98a; Firefox 扩展&#xff08;zh-CN&#xff09;

【如何与他人交流的问题】

一些朋友在学习的过程中&#xff0c;会问我一个问题&#xff0c;就是说网上怎么有那么多的**&#xff0c;这个**可能是白嫖党&#xff0c;也可能是中介&#xff0c;也可能是一些喜欢怼人的&#xff0c;还有一些朋友说自己每次出一个什么项目&#xff0c;下面就是说自己要准备圈…