10 分钟上手Web Scraper,从此爬虫不求人

2023-11-17

我现在很少写爬虫代码了,原因如下:

  1. 网站经常变化,因此需要持续维护代码。

  2. 爬虫的脚本通常很难复用,因此价值就很低。

  3. 写简单的爬虫对自己的技能提升有限,对我来不值。

但是不写爬虫,就不能方便的获取数据,自己写代码又要花费很多时间,少则一两个小时,多则半天的时间,这就让人很矛盾。

有没有一种方法可以不写代码,分分钟就就可以实现网页的数据抓取呢?

我去搜了下,还真有,我从这里面选了一个我认为最好用的,那就是 Web Scraper,有了它,基本上可以应付学习工作中 90% 的数据爬取需求,相对于 Python 爬虫,虽然灵活度上受到了一定的限制,但是学习成本很低,我用半个小时就学会了基本用法,这种低成本高效率的解决问题的工具,对我来说就是好东西。

好东西就值得分享,本文介绍 Web Scraper 的安装和使用方法,优缺点等,让你 10 分钟就可以上手。

PS:阅读原文可以访问文中的链接。

安装

Web Scraper 是一个谷歌浏览器插件。访问官方网站 https://webscraper.io/,点击 “Install”

会自动跳转至 Chrome 的网上商店,点击 “Add to Chrome” 即可。

如果无法访问 Chrome 的网上商店,请访国内的插件网站进行安装,如下:

  1. 浏览器插件下载中心 https://www.chromefor.com/

  2. 173应用网 https://173app.com/chrome-ext

  3. Chrome 网上应用店镜像 https://www.gugeapps.com/

  4. 再来个英文的下载网站 https://www.crx4chrome.com/

  5. Crx离线安装包下载 http://yurl.sinaapp.com/crx.php

  6. Chrome插件 http://chromecj.com/

  7. ChromeFor浏览器插件 https://chrome-extension-downloader.com/

使用

孰能生巧,新手可能会有点难以理解,其实只需要记住一句话,网页的内容是一棵树,树根就是网站的 url,从网站的 url 到我们需要访问的数据所在的元素(html element)就是从树根到叶子节点的遍历的过程。这个过程有简单的,就是直接一条路就走到叶子节点,也有复杂的,采用递归的思想处理页面刷新情况。

这里,我只展示一些简单的,让你建立对 Web Scraper 的初步认识,复杂的的爬取请访问官方文档,阅读视频和文档来学习。

请牢记,网页的内容是一棵树,这样方便你理解工具的工作原理。Web Scraper 就是以树的形式来组织 sitemap 的,以爬取知乎的热榜数据为例,一步步展示使用该插件。

知乎热榜的页面如下图所示:

根就是页面的网址,即 https://www.zhihu.com/hot,现在给这个根起个名字,叫 zhihu_hot(名字任意起,便于识别即可),zhihu_hot 的子节点可以是视频、科学、数码、体育这些子节点。这些子节点下的子节点就是我们要抓取的内容列表。

现在开始使用 Web Scraper:

第一步,打开谷歌浏览器的开发者工具,单击最右边的 Web Scraper 菜单,如下图所示:

第二步,创建 sitemap 及 selector:

单击 Create new sitemap -> Create sitemap,在 Sitemap name 处输入 zhihu_hot,这里 zhihu_hot 可以随意其名称,方便自己识别即可,只能是英文,然后 Start Url 填写 https://www.zhihu.com/hot:然后单击 Create sitemap 按钮完成创建,如下图所示:

单击 Add new selector 添加 selector,也就是添加子节点:

然后会弹出一个框让我们填写 selector 的相关信息,ID 这里填写 category,类型选择 Element Click,此时会出现两个选择器,一个是 selector,代表着要传递给 category 的子节点使用的元素,另一个是 Click selector,代表要点击的元素。为了方便你理解,请先选择 Click selector,在选择 selector,具体操作如下图所示:

Click selector 的选择:

selector 的选择:

选择完成之后,勾选 Mutiple 表示爬取多个分类,点击 Save selector 保存。

继续在 category 下添加 Selector,即 category_e, category_e 接受到的元素就是 category 中的 selector 选择的元素,即那个 div.HostList-list。category_e 的配置如下图所示:

然后继续在 category_e 下面继续添加三个 Selector,即 hot_no、title、hot_degree,分别如下图所示:

保存之后,点击 Selector graph

可以看到如下图所示的树:

到这一步,我们的 sitemap 及其 selector 都创建完成。

第三步,运行 Web Scraper。

单击菜单中的 Scrape 按钮

然后会让你设置爬取时的间隔,保持默认即可,如果网速比较慢可以适当延长:

点击 Start scraping 即可运行 Web Scraper,此时 Web Scraper 会打开一个新的浏览器窗口,执行按钮点击操作,并将数据保存在浏览器的 LocalStorage 中,运行结束后会自动关闭这个新窗口,点击下图中的 Refresh 按钮:

即可看到抓取的数据,如下图所示:

数据可以导出到 csv 文件,点击 Export data as CSV -> download now

即可下载得到 csv 文件:

是不是非常方便?

如果你还是不能成功爬取上述数据,以下是我导出的 sitemap 信息,你可以复制这些文本导入 sitemap,再进行尝试,对比看看哪里不一样:

{"_id":"zhihu_hot","startUrl":["https://www.zhihu.com/hot"],"selectors":[{"id":"category","type":"SelectorElementClick","parentSelectors":["_root"],"selector":"div.HotList-list","multiple":true,"delay":2000,"clickElementSelector":"a.HotListNav-item","clickType":"clickOnce","discardInitialElements":"do-not-discard","clickElementUniquenessType":"uniqueText"},{"id":"category_e","type":"SelectorElement","parentSelectors":["category"],"selector":"p","multiple":true,"delay":0},{"id":"hot_num","type":"SelectorText","parentSelectors":["category_e"],"selector":"div.HotItem-rank","multiple":false,"regex":"","delay":0},{"id":"title","type":"SelectorLink","parentSelectors":["category_e"],"selector":".HotItem-content a","multiple":false,"delay":0},{"id":"hot_degree","type":"SelectorText","parentSelectors":["category_e"],"selector":"div.HotItem-metrics","multiple":false,"regex":"","delay":0}]}

至于分页,或者无限加载,都是就可以轻松搞定的,本次案例中的分类按钮就相当于一类分页按钮,其他分页操作,官网都有对应的视频教程。

优缺点

优点:

Web Scraper 的优点就是不需要学习编程就可以爬取网页数据,对于非计算机专业的人可谓是爬虫不求人的利器。

即使是计算机专业的人,使用 Web Scraper 爬取一些网页的文本数据,也比自己写代码要高效,可以节省大量的编码及调试时间。

依赖环境相当简单,只需要谷歌浏览器和插件即可。

缺点:

只支持文本数据抓取,图片短视频等多媒体数据无法批量抓取。

不支持复杂网页抓取,比如说采取来反爬虫措施的,复杂的人机交互网页,Web Scraper 也无能为力,其实这种写代码爬取也挺难的。

导出的数据并不是按照爬取的顺序展示的,想排序就就要导出 Excel 再进行排序,这一点也很容易克服,大部分数据都是要导出 Excel 再进行数据分析的。

最后的话

掌握了 Web Scraper 的基本使用之后,就可以应付学习工作中 90% 的数据爬取需求,遇到一些稍微复杂的页面,可以多去看看官方网站的教程。

虽然只支持文本数据的抓取,基本上也够用了。如果是复杂网站的数据抓取,即使写代码也挺难爬取的,因此能快速解决手头的问题,提升工作效率,就是好工具,Web Scraper 就是这样的工具,是非常值得去学习的。

有问题?欢迎留言讨论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10 分钟上手Web Scraper,从此爬虫不求人 的相关文章

  • 将图与热图(可能是对数)配对?

    How to create a pair plot in Python like the following but with heat maps instead of points or instead of a hex bin plot
  • Python:导入模块一次然后与多个文件共享

    我有如下文件 file1 py file2 py file3 py 假设这三个都使用 lib7 py lib8 py lib9 py 目前 这三个文件中的每一个都有以下行 import lib7 import lib8 import lib
  • Python脚本从字母和两个字母组合生成单词

    我正在编写一个简短的脚本 它允许我使用我设置的参数生成所有可能的字母组合 例如 b a 参数 单词 5 个字母 第三 第五个字母 b a 第一个字母 ph sd nn mm 或 gh 第二 第四个字母 任意元音 aeiouy 和 rc 换句
  • 如何从邻接表高效创建稀疏邻接矩阵?

    我正在与last fm http labrosa ee columbia edu millionsong lastfm数据集来自百万歌曲数据集 http labrosa ee columbia edu millionsong 数据以一组 j
  • 如何创建增量加载网页

    我正在编写一个处理大量数据的页面 它会永远持续到我的结果页面加载 几乎无限 因为返回的数据太大了 因此 我需要实现一个增量加载页面 例如 url 中的页面 http docs python org http docs python org
  • 如何检测一个二维数组是否在另一个二维数组内?

    因此 在堆栈溢出成员的帮助下 我得到了以下代码 data needle s which is a png image base64 code goes here decoded data decode base64 f cStringIO
  • scala中的协变类型参数需要在java接口中保持不变

    我有一个看起来像这样的特征 一些进一步的信息可以在我自己提出了这个相关问题 https stackoverflow com questions 3695990 inheritance and automatic type conversio
  • 显示班级图片 10 秒

    我有下面给出的代码显示9 boxes 其值如下digital time 还有一个班级box002显示digits相当于随机选择的九个盒子的值 box002 can be dragged to digital time starting wi
  • 从命令行运行 Maven 插件的语法是什么。

    我看到这里已经有人问过这个问题 如何从命令行执行maven插件 https stackoverflow com questions 12930656 how to execute maven plugin from command line
  • PyQt5按钮lambda变量变成布尔值[重复]

    这个问题在这里已经有答案了 当我运行下面的代码时 它显示如下 为什么 x 不是 x 而是变成布尔值 这种情况仅发生在传递到用 lambda 调用的函数中的第一个参数上 错误的 y home me model some file from P
  • Google Cloud Messaging - 立即收到或长时间延迟收到的消息

    我在大学最后一年的项目中使用谷歌云消息传递 一切正常 但我在使用 GCM 时遇到了一些麻烦 通常 消息要么几乎立即传递 要么有很大的延迟 我读过这篇文章 但我真的认为它不适用于这种情况 GCM 通常会在消息发送后立即传送消息 然而 这并不总
  • py2exe ImportError:没有名为 的模块

    我已经实现了一个名为 myUtils 的包 它由文件夹 myUtils 文件 组成 init py 和许多名称为 myUtils 的 py 文件 该包包含在 myOtherProject py 中 当我从 Eclipse 运行它们时可以找到
  • 如何设置旋转元素背面的样式?

    我有一个figure它是可旋转的 通过用户输入任意角度 该旋转明显地使用transition财产 当该元件旋转超过 90 度 90 度时 元件的背面可见 我想对元素的通常隐藏的一面进行与正面不同的设计 但我不确定如何实现这一点 figure
  • 响应式导航栏隐藏其下方的元素

    我创建了一个响应式导航栏 但它使下面的元素 Flexslider 插件 消失 在我制作导航栏之前 下面的 Flexslider 可以正常显示 但现在不行 导航栏的 z index 为 2 所以我不知道问题是什么 我应该如何 更改什么才能允许
  • 跨浏览器:禁用输入字段的不同行为(文本可以/不能复制)

    我有一个被禁用的输入 html 字段 在某些浏览器 Chrome Edge Internet Explorer 和 Opera 中可以选择并复制文本 但至少在 Firefox 中这是不可能的 您可以通过在不同浏览器中执行以下代码来测试
  • 使用 Runtime.getRuntime().exec() 进行重定向不起作用

    我需要从程序执行命令 命令行是可以的 我在终端试了一下 但是在程序中不行 我从我的代码中添加一个副本 File dir new File videos String children dir list if children null Ei
  • Integer.parseInt 引发的 NumberFormatException

    嘿 我在学校上编码课 但老师没有很好地解释 所以我们必须在网上查找我所做的信息 但我无法找到代码中的错误 你能帮我吗 char end s do System out println Tipo de boleto char boleto c
  • Tkinter 将鼠标点击绑定到框架

    我一定错过了一些明显的东西 我的 Tkinter 程序中有两个框架 每个框架在网格布局中都有一堆标签 我想将鼠标点击绑定到其中一个而不是另一个 我目前使用 root bind
  • CSS:缩放字体大小以适应父块元素的高度

    我发现的几乎每个问题和答案都谈到了视口大小 这确实不是我的问题 拿着这支笔 https codepen io njt1982 pen pZjZNM https codepen io njt1982 pen pZjZNM 我有一个非常基本的
  • 使用 python 将 CSV 文件上传到 Microsoft Azure 存储帐户

    我正在尝试上传一个 csv使用 python 将文件写入 Microsoft Azure 存储帐户 我已经发现C sharp https blogs msdn microsoft com jmstall 2012 08 03 convert

随机推荐

  • 【踩坑】解决maven的编译报错Cannot connect to the Maven process. Try again later

    背景 新公司新项目 同事拷给我maven的setting配置文件 跑项目编译发现maven报 Cannot connect to the Maven process Try again later If the problem persis
  • 你了解Spring BeanFactoryAware嘛

    其实再写这篇文章之前呢 我是看Spring IOC源码 可是老师啃不动 那么就从外围开始吧 在Spring生命周期的探索当中 其中网上主流的做法就是让我们的Bean实现一大波接口 到目前为止 这些接口的名称一个也没有记住 Spring的这个
  • Redis分片

    目录 一 Redis为什么要分片 二 分布式存储的特性 三 分片方案 1 范围分片 优点 缺点 2 hash节点取余分区 3 一致性hash分区 一 Redis为什么要分片 一般你系统核心缓存的命中率需维持在99 甚至99 9 哪怕下降1
  • JavaScript函数 - 简介与示例代码

    JavaScript是一种广泛应用于Web开发的脚本语言 它具备强大的函数功能 函数是JavaScript中的一个核心概念 它允许您封装可重复使用的代码块 并通过调用函数来执行特定的操作 本文将介绍JavaScript函数的基本概念 并提供
  • java程序员经典错误,请速速收藏

    大家好 我是鱼尾 作为一名 java 开发程序员 不知道大家有没有遇到过一些匪夷所思的bug 有时候在我们碰到错误的时候 可能会花几个小时才能解决 然而当你找到它们的时候 你可能会默默地骂自己是个傻瓜 因为这些可笑的 bug 基本上都是你忽
  • Entry输入框实现登录用户名冷却验证小案例(Tkinter)

    本篇讲一下Entry冷却验证的用法 其实我们在登录注册的时候用户名是否存在的验证一般不能等到全部都填写完后 点击注册再进行判断 最好的办法是在输入用户名时就立刻判断是否存在 这篇内容是在上一篇合法性验证的基础上的升级版 点击查看上一篇 实现
  • XSS数据接收平台——蓝莲花(BlueLotus)

    文章目录 一 前言 二 安装 三 使用 1 我的JS创建一个模板 2 使用创建的模板攻击 3 打开攻击的目标 这里选择pikachu靶场的存储型XSS模块测试 4 查看返回的数据 一 前言 蓝莲花平台是清华大学曾经的蓝莲花战队搭建的平台 该
  • 适合教孩子编码的 7 款免费编程语言

    21CTO导读 计算机编程是一项需求旺盛且欣欣向荣的事业 所以这些日子父母们可能都希望他们的孩子长大后也能成为一名软件程序员 如果想教小孩如何编程 该从哪儿开始呢 可以尝试以下列表中这些对儿童友好的编程语言以及工具 Scratch 海风教育
  • 基于dubbo+RocketMQ+springboot的简单埋点系统

    1 整体架构流程 2 目录详情 consumer 消息消费者项目 provider 方法提供者项目 mq RocketMQ项目 point 打点接口项目 3 关键代码详解 3 1 mq项目 mq properties mq defaultm
  • 最新一键安装jumpserver

    最新一键安装开源堡垒机 jumpserver 安装环境unbun18 预先安装了docker 20 10 12 官网 jumpserver install 执行代码 curl sSL https github com jumpserver
  • IDEA开发SpringBoot+mybatis 新手快速入门

    因为最近学习Java 自己练习springboot和mybatis 练习一下 一 IDEA创建springboot项目 2 pom xml 引用相关文件
  • /home/mobaxterm/anaconda3/conda.exe: cannot execute binary file

    在windows下的linux安装anaconda时 报错如下 解决 uname m 输出为i686 i386到i686 那就是32位系统 如果是x86 64 那就是64系统 所以是anaconda使用的不匹配 换成32位就可以了 最后选择
  • 城市排水管网窨井水位监测系统解决方案

    一 方案背景 排水管网肩负着城市防汛排水 污水收集输送的重任 是城市重要的基础设施 排水管网的正常运行以及对排水管网的科学化管理 对于保障城市的正常运行 稳定社会经济社会发展 安定人民生活起着十分重要的作用 建立排水管网窨井水位监测信息系统
  • Docker+Jenkins+GIT CICD持续化集成实战

    一 需求 开发将源码上传到github仓库 通过jenkins持续集成引擎结合git工具 将源码拉取到jenkins服务器 通过工具maven在本地讲源码编译打包成war包 在ssh到Docker宿主机 通过执行脚本生成制作自定义的Dock
  • axios使用异步方式无感刷新token,简单,太简单了

    文章目录 废话在前 接着踩坑 解决思路 完整代码 废话在前 写vue的伙伴们无感刷新token相信大家都不陌生了吧 刚好 最近自己的一个项目中就需要用到这个需求 因为之前没有弄过这个 研究了一个上午 终于还是把它拿下了 小小的一个token
  • apollo灰度发布

    apollo灰度发布 七 https blog csdn net weixin 42412601 article details 88415437
  • 《STL源码剖析》学习笔记2——神奇的__type_traits

    标签 C C STL 学习 笔记 在STL中为了提供通用的操作而又不损失效率 我们用到了一种特殊的技巧 叫traits编程技巧 具体的来说 traits就是通过定义一些结构体或类 并利用模板类特化和偏特化的能力 给类型赋予一些特性 这些特性
  • Python灰度图像均衡化

    import cv2 import numpy as np from matplotlib import pyplot as plt 读取同文件夹下的lena图像并做灰度化处理 lena plt imread lena jpg lena l
  • 【ADS学习笔记(一)——ADS介绍】

    一 创建Workspace 在创建Workspace时 点击Change Libraries 可以添加和更改元件库 系统默认添加Analog RF 模拟 射频元件库 以及DSP 数字元件库 也可以添加自己下载的元件库 元件库也可以在创建完W
  • 10 分钟上手Web Scraper,从此爬虫不求人

    我现在很少写爬虫代码了 原因如下 网站经常变化 因此需要持续维护代码 爬虫的脚本通常很难复用 因此价值就很低 写简单的爬虫对自己的技能提升有限 对我来不值 但是不写爬虫 就不能方便的获取数据 自己写代码又要花费很多时间 少则一两个小时 多则