c 抓取网页数据( 网页信息提取的方式从网页中提取信息有一些方法? )

优采云 发布时间: 2022-04-05 06:19

  c 抓取网页数据(

网页信息提取的方式从网页中提取信息有一些方法?

)

  

  关于转载授权

  编译|丁学煌年程序笔记|奚雄芬校对|姚嘉玲

  介绍

  从网页中提取信息的需求呈指数级增长,其重要性也越来越明显。每隔几周,我自己就想从网上获取一些信息。例如,上周我们考虑建立一个关于各种数据科学在线课程的受欢迎程度和意见指数。我们不仅需要识别新课程,还需要获取课程评论,总结它们并建立一些指标。这是一个问题或产品,其功效更多地取决于网络抓取和信息提取(数据集)技术,而不是我们过去使用的数据聚合技术。

  如何从网页中提取信息

  有几种方法可以从网页中提取信息。使用 API 可能被认为是从 网站 中提取信息的最佳方式。几乎所有的大型网站,如 Twitter、Facebook、Google、Twitter、StackOverflow 都提供 API 以更结构化的方式访问这些 网站 数据。如果可以直接通过 API 获取所需信息,这种方法几乎总是比网络抓取更好。因为如果可以从数据提供者那里获取结构化数据,为什么还要构建自己的引擎来提取相同的数据呢?

  不幸的是,并不是所有的 网站 都提供 API。有的网站不愿意让读者以结构化的方式获取大量信息,有的网站由于缺乏相关的技术知识而无法提供API。在这样的情况下,应该怎么办?好吧,我们需要通过网络抓取来获取数据。

  当然还有其他的,比如RSS提要等,但由于使用限制,我不会在这里讨论它们。

  

  什么是网页抓取?

  网页抓取是一种用于从 网站 获取信息的计算机软件技术。该技术主要侧重于将网络上的非结构化数据(HTML 格式)转化为结构化数据(数据库或电子表格)。

  网页抓取可以通过不同的方式实现,从 Google Docs 到几乎任何编程语言。我会选择使用 Python,因为它的易用性和丰富的生态系统。Python 中的 BeautifulSoup 库可以协助完成这项任务。在本文中,我将向您展示使用 Python 编程语言学习网络抓取的最简单方法。

  需要使用非编程方式提取网页数据的读者,可以去import.io看看。有基于GUI的驱动来运行网页抓取的基本操作,电脑爱好者可以继续阅读这篇文章!

  网页抓取所需的库

  我们都知道 Python 是一种开源编程语言。您也许可以找到许多库来实现一个功能。因此,找出最好的库是非常有必要的。我倾向于使用 BeautifulSoup(一个 Python 库),因为它易于使用且直观。准确地说,我使用两个 Python 模块来抓取数据:

  Urllib2:它是一个用于获取 URL 的 Python 模块。它定义了实现 URL 操作(基本、摘要式身份验证、重定向、cookie 等)的函数和类。有关详细信息,请参阅文档页面。

  ·BeautifulSoup:这是一个从网页中提取信息的神奇工具。您可以使用它从网页中提取表格、列表、段落,还可以添加过滤器。在本文中,我们将使用最新版本 BeautifulSoup 4。安装说明可以在其文档页面上找到。

  BeautifulSoup 不能帮助我们获取网页,这就是我使用 urllib2 和 BeautifulSoup 库的原因。除了 BeautifulSoup,Python 还有其他抓取 HTML 的方法。如:

  ·机械化

  ·刮痕

  ·scrapy

  基础 - 熟悉 HTML(标签)

  在进行网页抓取时,我们需要处理 html 标签。因此,我们首先要搞清楚标签。如果您已经了解 HTML 的基础知识,则可以跳过本节。以下是 HTML 的基本语法:

  

  此语法的各种标签解释如下:

  1.:html 文档必须以类型声明开头

  2.html 文件写在 和 标签之间

  3.html文档的可见部分写在和标签之间

  4.html头使用

  标记定义

  5.html段落使用

  标签定义

  其他有用的 HTML 标签是:

  1.html 链接是使用标签“This is a test ”定义的

  2.html表格使用定义,row用row表示,row的第二个元素在标签里,不在

  分为数据

  

  3.htmlList 以

  )

  

  如上图,你会注意到

  标签内。所以我们需要注意这一点。现在要访问每个元素的值,我们将为每个元素使用“find(text=True)”选项。让我们看一下代码:

  

  

  

  

  最后,我们dataframe里面的数据如下:

  

  同样,可以使用 BeautifulSoup 执行各种其他类型的网页抓取。这将简化从网页手动采集数据的工作。另请参阅其他属性,例如 .parent、.contents、.descendants 和 .next_sibling、.prev_sibling 以及标签名称浏览的各种属性。这些将帮助您有效地抓取网络。

  但是为什么我不能只使用正则表达式呢?

  现在,如果你知道一个正则表达式,你可能会认为你可以用它来编写代码来做同样的事情。当然,我也遇到过这个问题。我使用 BeautifulSoup 和正则表达式来做同样的事情,发现:

  BeautifulSoup 中的代码比用正则表达式编写的代码更强大。使用正则表达式编写的代码必须随着页面的变化而变化。尽管 BeautifulSoup 在某些情况下需要调整,但相对而言,BeautifulSoup 更好。

  正则表达式比 BeautifulSoup 快得多,在相同结果下比 BeautifulSoup 快 100 倍。

  所以它归结为代码的速度和健壮性之间的比较,这里没有一刀切的赢家。如果您要查找的信息可以通过简单的正则表达式语句获取,那么您应该选择使用它们。对于几乎所有复杂的工作,我通常比正则表达式更推荐 BeautifulSoup。

  结语

  在本文中,我们使用了两个 Python 库 BeautifulSoup 和 urllib2。我们还学习了 HTML 的基础知识,并通过解决一个问题逐步实现了网页抓取。我建议您练习并使用它从网页中采集数据。

  译者简介 丁雪,华中师范大学信息科学硕士,从事用户行为与个性化服务研究。关注大数据的发展,希望从事互联网和咨询行业的相关工作。上海长海医院硕士*敏*感*词*黄念对生物医学大数据挖掘及其应用非常感兴趣,愿意通过这个平台结识更多的朋友。熊芬 熊芬是北京邮电大学无线信号处理专业的*敏*感*词*。主要研究图信号处理,对基于社交网络的图数据挖掘感兴趣。他希望通过这个平台结识更多从事大数据的人,结交更多志同道合的人。. 家庭主妇姚嘉玲对数据分析处理非常感兴趣。她正在努力学习,希望能和你多交流。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线