从表中采集数据的3种方法

网页内部以表格格式显示了大量数据。 但是,当您尝试将数据存储到本地计算机以供以后访问时,可能会非常困难。 问题在于数据无法嵌入HTML内,而无法以CSV等结构化格式下载。 Web抓取是将数据获取到本地计算机的最简单方法。
Unicorn Startup

我想向几乎对编码一无所知的人介绍3种从表中抓取数据的方法:

Google表格Octoparse(网页抓取工具)R语言(使用rvest软件包)

Google表格
在Google表格中,有一个很棒的功能,称为Import Html,它可以使用固定表达式= ImportHtml(URL,“表格”,num)从HTML页面中的表格中抓取数据。

第1步:打开一个新的Google表格,并将表达式输入空白。

将显示该公式的简要介绍。
Google sheet_importHTML

步骤2:输入URL,并根据需要调整索引字段。(例如:https://en.wikipedia.org/wiki/Forbes%27_list_of_the_world%27s_highest-paid_athletes)

Google sheet_URLinput

通过上述两个步骤,我们可以在几分钟之内将表格抓取到Google工作表中。 显然,Google表格是帮助我们直接将表格抓取到Google表格的一种好方法。 但是,存在明显的局限性。 如果我们计划使用Google表格跨多个页面抓取表格,那么这将是一项平凡的任务。 因此,您需要一种更有效的方法来自动化该过程。

 

使用网页抓取工具抓取表格
为了更好地说明我的观点,我将使用此网站向您展示抓取过程,https://www.babynameguide.com/categoryafrican.asp?strCat = African

首先,下载并启动Octoparse。

步骤1:单击Advanced Mode(高级模式)开始一个新项目。

advanced-mode

第2步:在框中输入目标URL,然后单击“保存URL”以在Octoparse内置浏览器中打开网站。

enter-the-url

步骤3:通过3次点击创建分页:

a)在浏览器中单击“ B”

b)在“操作提示”面板中单击“全选”

c)在“操作提示”面板中单击“循环单击每个URL”

octoparse_pagination-1
octoparse_pagination-2

现在,我们可以看到在工作流框中创建了一个分页循环。
pagination-3
第4步:点击以下内容以刮擦表格。

a)单击表第一行中的第一个单元格
b)单击“操作提示”面板中的展开图标,直到整行以绿色突出显示(通常,标记应为TR)
c)单击“操作提示”面板中的“选择所有子元素”,然后单击“提取数据”和“提取循环中的数据”

octoaprse-scrape-a-table-1
octoaprse-scrape-a-table-3
octoaprse-scrape-a-table-2
octoaprse-scrape-a-table-4

在工作流中构建了用于刮除表格的循环。
octoaprse-scrape-a-table-5

步骤5:提取数据
extract-data

通过以上5个步骤,我们可以获得以下结果。

由于增加了分页功能,整个刮削过程变得更加複杂。但是,我们必须承认,Octoparse更好地处理了批量抓取数据。

最令人惊奇的是,我们不需要了解任何编码方面的知识。就是说,无论我们是不是程序员,我们都可以创建自己的“抓取工具”来获取所需的数据。如果需要延展阅读,可以参考:https://helpcenter.octoparse.com/hc/en-us/articles/360018324051-Can-I-extract-a-table-form-

但是,如果您碰巧了解一些编码知识,并且想自己编写脚本,那么使用R语言的rvest包是帮助您抓取表格的最简单方法。

 

R语言(使用rvest软件包)
在这种情况下,我还以该网站https://www.babynameguide.com/categoryafrican.asp?strCat=African为例,介绍了如何使用rvest刮取表格。

在开始编写代码之前,我们需要了解有关rvest软件包的一些基本语法。
 

html_nodes():选择特定文档中的特定部分。我们可以选择使用CSS选择器,例如html_nodes(doc,“ table td”)或xpath选择器,html_nodes(doc,xpath =“ // table // td”)html_tag():提取标籤名称。一些类似的是html_text(),html_attr()和html_attrs()html_table():解析HTML表并将其提取到R Framework。

除了上述内容外,还有一些功能可以模拟人类的浏览行为。例如,html_session(),jump_to(),follow_link(),back(),forward(),submit_form()等。

在这种情况下,我们需要使用html_table()来实现我们的目标,即从表中抓取数据。

首先下载R(https://cran.r-project.org/)。

步骤1:安装rvest。
install-rvest

步骤2:开始编写代码,如下图所示。

Library(rvest):导入rvest包
Library(magrittr):导入magrittr包
URL:目标URL
阅读HTML:从目标URL访问信息
列表:从表中读取数据

步骤3:将所有代码写入R pen后,单击“ Enter”运行脚本。 现在我们可以立即获得表信息。
![rvest_final-result](https://www.octoparse.com/media/7475/rvest_final-result.jpg)

与使用几行代码提取表格数据相比,使用网络抓取工具似乎不需要花费更多的精力。 实际上,编程确实具有陡峭的学习曲线,这通常提高了人们进入Web抓取的真正能力的门槛。 这种情况使不在技术行业工作的人更难获得竞争优势来利用Web数据。

 

我希望以上教程可以帮助您大致了解Web抓取工具如何帮助您获得与程序员轻鬆实现的相同结果。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章