webscraper——轻量数据爬取利器html的部分问题

bolne      2022-02-17     441

关键词:

日常学习工作中,我们多多少少都会遇到一些数据爬取的需求,比如说写论文时要收集相关课题下的论文列表,运营活动时收集用户评价,竞品分析时收集友商数据。

当我们着手准备收集数据时,面对低效的复制黏贴工作,一般都会萌生一个想法:我要是会爬虫就好了,分分钟就把数据爬取下来了。可是当我们搜索相关教程时,往往会被高昂的学习成本所劝退。拿现在最通用的 python 爬虫来说,对于小白来说往往要跨过下面几座大山:

学习一门编程语言:python
学习网页的基础构成——HTML 标签和 CSS 选择器,有时候还要了解一些 JavaScript
学习网络通信的基础协议——HTTP 协议
学习 python 中常见的爬虫框架和解析库
......
上面的知识点,没有几个月是掌握不完的。而且对于非强需求的人来说,这么多的知识点,你还会时时刻刻和遗忘做斗争。

那么有没有不学 python 也能爬取数据的利器呢?结合文章标题,我想你已经知道我要安利什么了。今天我要推荐的就是Web Scraper,一个轻量的数据爬虫利器。

Web Scraper 的优点就是对新手友好,在最初抓取数据时,把底层的编程知识和网页知识都屏蔽了,可以非常快的入门,只需要鼠标点选几下,几分钟就可以搭建一个自定义的爬虫。

我在过去的半年里,写了很多篇关于 Web Scraper 的教程,本文类似于一篇导航文章,把爬虫的注意要点和我的教程连接起来。最快一个小时,最多一个下午,就可以掌握 Web Scraper 的使用,轻松应对日常生活中的数据爬取需求。

插件安装
Web Scraper 作为一个 Chrome 插件,网络条件良好的用户可以直接上chrome 网上应用店安装,不太好的用户可以下载插件安装包手动安装,具体的安装流程可以看我的教程:Web Scraper 的下载与安装。

常见网页的类型
结合我的数据爬取经验和读者反馈,我一般把网页分为三大类型:单页、分页列表和筛选表单。

1.单页

单页是最常见的网页类型。

我们日常阅读的文章,推文的详情页都可以归于这种类型。作为网页里最简单最常见的类型,Web Scraper 教程里第一篇爬虫实战就拿豆瓣电影作为案例,入门 Web Scraper 的基础使用。

2.分页列表

分页列表也是非常常见的网页类型。

互联网的资源可以说是无限的,当我们访问一个网站时,不可能一次性把所有的资源都加载到浏览器里。现在的主流做法是先加载一部分数据,随着用户的交互操作(滚动、筛选、分页)才会加载下一部分数据。

教程里我费了较大的笔墨去讲解 Web Scraper 如何爬取不同分页类型网站的数据,因为内容较多,我放在本文的下一节详细介绍。

3.筛选表单

表单类型的网页在 PC 网站上比较常见。

这种网页的最大特点就是有很多筛选项,不同的选择会加载不同的数据,组合多变,交互较为复杂。比如说淘宝的购物筛选页。

比较遗憾的是,Web Scraper 对复杂筛选页的支持不是很好,如果筛选条件可以反映在 URL 链接上就可以爬取相关数据,如果不能就无法爬取筛选后的数据。

常见的分页类型
分页列表是很常见的网页类型。根据加载新数据时的交互,我把分页列表分为 3 大类型:滚动加载、分页器加载和点击下一页加载。

1.滚动加载

我们在刷朋友圈刷微博的时候,总会强调一个『刷』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。

Web Scraper 有一个选择器类型叫 Element scroll down,意如其名,就是滚动到底部加载的意思。利用这个选择器,就可以抓取滚动加载类型的网页,具体的操作可以见教程:Web Scraper 抓取「滚动加载」类型网页。

2.分页器加载

分页器加载数据的网页在 PC 网页上非常常见,点击相关页码就能跳转到对应网页。

Web Scraper 也可以爬取这种类型的网页。相关的教程可见: Web Scraper 控制链接分页、Web Scraper 抓取分页器类型网页 和 Web Scraper 利用 Link 选择器翻页。

3.点击下一页加载

点击下一页按钮加载数据其实可以算分页器加载的一种,相当于把分页器中的「下一页」按钮单独拿出来自成一派。

这种网页需要我们手动点击加载按钮来加载新的数据。Web Scraper 可以 Element click 选择器抓取这种分页网页,相关教程可见:Web Scraper 点击「下一页」按钮翻页。

进阶使用
学习了上面列出的几篇教程,Web Scraper 这个插件 60% 的功能基本上就掌握了。下面是一些进阶内容,掌握了可以更高效的抓取数据。

1.列表页 + 详情页

互联网资讯最常见的架构就是「列表页 + 详情页」的组合结构了。

列表页是内容的标题和摘要,详情页是详细说明。有时候我们需要同时抓取列表页和详情页的数据,Web Scraper 也支持这种常见的需求。我们可以利用 Web Scraper 的 Link 选择器来抓取这种组合网页,具体操作可以看教程:Web Scraper 抓取二级网面。

2.HTML 标签与 CSS 选择器

我在前面说了 Web Scraper 屏蔽了一些网页知识,比如说 HTML 和 CSS 的一些内容,只需要简单的鼠标点选就可以搭建一个自定义爬虫。但是如果我们花半个小时了解一些基础的 HTML 和 CSS 知识,其实可以更好的使用 Web Scraper。所以我专门写了一篇介绍 CSS 选择器的文章,十分钟读下来可以上手自定义 CSS 选择器。

3.正则表达式的使用

Web Scraper 其实是一款专注于文本爬取的爬虫工具。如果你日常工作中经常和文本打交道,或者使用过一些效率工具,那你一定听说过正则表达式。没错,Web Scraper 也支持基础的正则表达式,用来筛选和过滤爬取的文本,我也写了一篇文章介绍正则表达式,如果爬取过程中使用它,可以节省不少数据清洗的时间。

4.Sitemap 的导入和导出

SItemap 是个什么东西?其实它就是我们操作 Web Scraper 后生成的配置文件,相当于 python 爬虫的源代码。我们可以通过分享 Sitemap 来分享我们制作的爬虫,相关操作我也写了教程:Web Scraper 导入导出爬虫配置。

5.换一个存储数据库

Web Scraper 导出数据时有一个缺点,默认使用浏览器的 localStorage 存储数据,导致存储的数据是乱序的。这种情况可以通过 Excel 等软件进行排序,也可以通过换一个数据存储库的方式来解决。

Web Scraper 支持 CouchDB 数据库,配置成功后导出的数据就是正序了。相关的配置过程可以看我写的教程:Web Scraper 使用 CouchDB。

Web Scraper 的优点
轻量:非常的轻量。上手只需要一个 Chrome 浏览器和一个 Web Scraper 插件。对于一些限制安装第三方软件的公司电脑,可以很轻易的突破这层限制
提效:Web Scraper 支持绝大多数的网页的爬取,可以无侵入的加入你的日常工作流中
快:抓取速度取决于你的网速与浏览器加载速度,其他的数据采集软件可能有限速现象(充钱就能不限速)
Web Scraper 的缺点
只支持文本数据抓取:图片短视频等多媒体数据无法批量抓取
不支持范围抓取:例如一个网页有 1000 条数据,默认是全量抓取的,无法配置抓取范围。想停止抓取,只能断网模拟数据加载完毕的情况
不支持复杂网页抓取:对于那些加了复杂交互、酷炫的特效和反人类的反爬虫网页,Web Scraper 无能为力(其实这种网页写 python 爬虫也挺头疼)
导出数据乱序:想让数据正序就得用 Excel 或者用 CouchDB,相对复杂了一些
总结
掌握了 Web Scraper 的使用,基本上可以应付学习工作中 90% 的数据爬取需求。相对于 python 爬虫,虽然灵活度上受到了限制,但是低廉的学习成本可以大大节省学习时间,快速解决手头的工作,提高整体的工作效率。综合来看,Web Scraper 还是非常值得去学习的。

webscraper教程(五)爬虫进阶之微博评论的点击「查看更多」爬取

参考技术A任何事件在微博的发酵速度绝对是各大平台中最快的,如果把微博评论爬取下来,进行处理和分析,就能对某个事件的不同立场和风向有了全面的了解和掌握。当然,评论量大的微博在爬取时耗费时间较长,为了缩短... 查看详情

不用写代码,如何爬取简单网页的信息?(代码片段)

...定义一些抓取规则。但我今天要介绍的是另外一个神器--WebScraper,它是Chrome浏览器的一个扩展插件,安装后你可以直接在F12调试工具里使用它。#1.安装WebScraper有条件的同学,可以直接在商店里搜索WebScraper安装它没有... 查看详情

如何使用java写一个轻量的爬取动态内容的爬虫

最近刚好在学这个,对于一些第三方工具类或者库,一定要看官方tutorial埃学会用chromenetwork分析请求,或者fiddler抓包分析。普通的网页直接用httpclient封装的API就可以获取网页HTML了,然后JSoup、正则提取内容。参考技术A当然可以... 查看详情

“缺失”/隐藏的 HTML 代码阻碍了 Webscraper 开发

】“缺失”/隐藏的HTML代码阻碍了Webscraper开发【英文标题】:"Missing"/HiddenHTMLCodeStallingWebscraperDevelopment【发布时间】:2022-01-2307:15:12【问题描述】:我是一名新手程序员,试图创建一个网络抓取程序,最终目标是加快NASAEa... 查看详情

python3 webscraping-循环只返回一次迭代

】python3webscraping-循环只返回一次迭代【英文标题】:python3webscraping-loopreturnsonlyoneiteration【发布时间】:2022-01-1410:57:00【问题描述】:python3网络抓取)我正在尝试从html数据中提取表格并将其存储到一个新的数据框中。我需要所... 查看详情

beautifulsoup 解析文件夹 webscraping 中的每个 html 文件 [关闭]

】beautifulsoup解析文件夹webscraping中的每个html文件[关闭]【英文标题】:beautifulsoupparseeveryhtmlfilesinafolderwebscraping[closed]【发布时间】:2017-10-2903:45:09【问题描述】:我的任务是从目录中读取每个html文件。条件是查找每个文件是否... 查看详情

Webscraping - 试图提取一些数据,但陷入了最后的障碍

】Webscraping-试图提取一些数据,但陷入了最后的障碍【英文标题】:Webscraping-Tryingtoextractsomedata,butgotstuckatthefinalhurdle【发布时间】:2021-09-0308:38:25【问题描述】:我已经设法公开了正确的数据(其中一些是在页面中动态计算的,... 查看详情

json的好处-新一代数据传输利器

...结构)。因为是文本所以各种语言都能兼容,包含JS这种轻量级的客户端脚本。为什么不XMLXML的冗余太大,不过XML阅读起来比较方面,所以并没有被json完全取代,很多时候都是并存。比如sina微博的开发平台有一个JSON版本和一个X... 查看详情

调试利器!一款轻量级日志库log.c

这两天发现一个还不错的开源项目,记录一下学习心得。对于嵌入式底层应用开发,基本离不开日志功能,这种轮子有很多,log.c最简单,达到了开箱即用的级别。log.c是什么?https://github.com/rxi/log.c简单地... 查看详情

android进阶——轻量级跨进程传递message利器messenger详解(代码片段)

文章大纲引言一、Messenger概述二、Messenger源码解析1、IMessenger接口2、Messenger主要方法2.1、Messenger(Handlertarget)2.2、Messenger(IBindertarget)2.3、send(Messagemessage)三、Messenger的使用1、首先在服务端定义一个Messenger对象2、客户端使用Messenger3... 查看详情

2.5翻页选择器elementclickselector--webscraper操作手册

参考技术A我们抓取数据时,有时候碰到翻页的情况,插件对于翻页处理有2种方式翻页时会碰到url规律变化的情况比如企查查中搜索框带科技的企业,抓取10页的企业名录企查查科技企业第1页:https://www.qichacha.com/search?key=科技#p:1... 查看详情

从 Webscrape 过滤和格式化数据框

】从Webscrape过滤和格式化数据框【英文标题】:FilteringandFormatdataframefromWebscrape【发布时间】:2020-04-2809:04:00【问题描述】:我是Python新手,但对R很了解。我正在尝试从雅虎网站抓取股票价格数据。我成功检索了价格数据并能够... 查看详情

将数据从 webscraper 上传到 SQL server

】将数据从webscraper上传到SQLserver【英文标题】:UploadingdatafromwebscrapertoSQLserver【发布时间】:2020-12-0312:30:36【问题描述】:我正在尝试将网络抓取的交易上传到mysql服务器:defsendToSQL(deals,n):length=len(deals)iflength<n:print("Notenoughdeal... 查看详情

监控利器monitorix(代码片段)

...利于服务器长期稳定运行。二、简介Monitorix是免费开源的轻量级系统监控工具。致力于监控linux系统中的服务和网络资源,通过WEB管理页面更直观地进行展示。Monitorix一般常用语Linux或UNIX系统,由于具有简单轻量的特性,也可以 查看详情

python学习使用feapder框架,编写爬虫,爬取中国工程院院士信息(代码片段)

...补充👇①Feapder框架简介和Scrapy类似,feapder支持轻量级爬虫、分布式爬虫、批次爬虫、爬虫报警机制等功能内置的3种爬虫如下:AirSpider——轻量级爬虫,适合简单场景、数据量少的爬虫Spider——分布式爬虫,... 查看详情

aria2多线程轻量级批量下载利器

1. 折腾命令行https://aria2.github.io/ 2.懒人版安装命令行下载神器」aria2懒人安装教程[Windows] 3.GUI工具免配置Aria2图形界面版免费开源下载软件PDMhttp://aria2c.com/https://github.com/ziahamza/webui-aria2AriaNGPhoton-开箱即用的免配置Aria2... 查看详情

推荐oc解析html数据的类库(爬取网页数据)

  TFhpple是一个用于解析html数据的第三方库,本人感觉功能还算可以,只不过在使用前必须配置项目。    配置1.导入libxml2.tbd 2.设置编译路径   使用这里使用一个例子来说明http://so.gushiwen.org/guwen/book_2.aspx &nb... 查看详情

androidjsoup爬取网页数据

一不小心一个月又过去了,其实最近还是小忙小忙的,废话不多说,直接进入今天的主题吧。Jsoup–JavaHTMLParser,withbestofDOM,CSS,andjquery.,看这个介绍就知道,这个就是方便咱们Java和Android来解析HTML的。HTML标签要去爬别人的HTML标签... 查看详情