php 抓取网页标题( 网页信息提取的方式从网页中提取信息的需求日益剧增)
优采云 发布时间: 2021-12-23 23:12php 抓取网页标题(
网页信息提取的方式从网页中提取信息的需求日益剧增)
介绍
从网页中提取信息的需求正在迅速增加,其重要性也越来越明显。每隔几周,我自己就想从网页中提取一些信息。例如,上周我们考虑建立各种数据科学在线课程的受欢迎程度和意见的索引。我们不仅需要寻找新的课程,还要抓取课程的评论,总结并建立一些指标。这是一个问题或产品,它的功效更多地取决于网络爬虫和信息提取(数据集)的技术,而不是我们过去使用的数据聚合技术。
从网页中提取信息的方法
有多种方法可以从网页中提取信息。使用 API 可能被认为是从 网站 中提取信息的最佳方式。几乎所有的大型网站,如Twitter、Facebook、Google、Twitter、StackOverflow,都提供了API,以更加结构化的方式访问网站数据。如果需要的信息可以通过API直接获取,那么这种方式几乎总是比网络爬取方式要好。因为如果你可以从数据提供者那里得到结构化的数据,那为什么还要构建自己的引擎来提取相同的数据呢?
不幸的是,并非所有 网站 都提供 API。一些网站不愿意让读者以结构化的方式抓取大量信息,一些网站由于缺乏相关技术知识而无法提供API。遇到这种情况我该怎么办?那么,我们需要通过网络爬虫来获取数据。
当然还有一些其他的方式,比如RSS订阅,但是由于使用限制,这里就不展开讨论了。
什么是网络爬虫?
网页抓取是一种从网站获取信息的计算机软件技术。该技术主要专注于将网络上的非结构化数据(HTML 格式)转换为结构化数据(数据库或电子表格)。
网络爬虫可以通过不同的方式实现,包括从 Google Docs 到几乎所有的编程语言。由于 Python 的易用性和丰富的生态系统,我会选择使用 Python。Python 中的 BeautifulSoup 库可以协助完成这项任务。在本文中,我将使用 Python 编程语言向您展示学习网页抓取的最简单方法。
需要非编程方式提取网页数据的读者,可以去import.io看看。有基于图形用户界面的基本操作来运行网页抓取。电脑迷可以继续看这篇文章!
网络爬虫所需的库
我们都知道 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文档写在and标签之间
3.html文档的可见部分写在and标签之间
4.html 标头使用
标签定义
5.html 段落用法
标签定义
其他有用的 HTML 标签是:
1.html 链接使用标签定义,“这是一个测试”
2.html 表单使用
定义、性能、性能
分成数据
3.html 列表
(有序)开始,列表中的每个元素都以
如果你不熟悉这些 HTML 标签,我建议你学习 W3schools 上的 HTML 教程。这样就会对 HTML 标签有一个清晰的了解。
使用 BeautifulSoup 抓取网页
在这里,我将从维基百科页面抓取数据。我们的最终目标是获取印度各州和联邦首都的列表,以及一些基本详细信息,例如机构信息、前首都以及构成此 Wikipedia 页面的其他信息。让我们一步步做这个项目来学习:
1.导入必要的库
2.使用“美化”功能查看HTML页面的嵌套结构
如上所示,您可以看到 HTML 标签的结构。这将有助于了解不同的可用标签,从而了解如何使用它们来捕获信息。
3.处理HTML标签
a.soup.:返回开始和结束标签之间的内容,包括标签。
b.soup..string:返回给定标签内的字符串
C。找到标签内的链接:我们知道我们可以用标签来标记链接。因此,我们应该使用soup.a 选项,它应该返回网页中可用的链接。我们开始做吧。
如上图,可以看到只有一个结果。现在,我们将使用“find_all()”来获取所有链接。
上面显示了所有的链接,包括标题、链接和其他信息。现在,为了只显示链接,我们需要使用get的“href”属性:遍历每个标签,然后返回链接。
4.找正确的表:我们在找表抓取州府的信息时,首先要找到正确的表。让我们编写指令来获取所有表标签中的信息。
现在为了找到正确的表,我们将使用该表的属性“class”,并用它来过滤出正确的表。在chrome浏览器中,可以通过在需要的网页表上右键->检查元素->复制类名或者通过上面命令的输出找到正确的表类名来查询类名。
5. 将信息提取到DataFrame中:这里,我们需要遍历每一行(tr),然后将tr(td)的每个元素赋值给一个变量并加入到列表中。我们先来看看表格的HTML结构(我不想抢表格标题的信息)
如上所示,您会注意到的第二个元素是在标签内,而不是在标签内。因此,我们需要注意这一点。现在要访问每个元素的值,我们将使用每个元素的“find(text=True)”选项。我们来看一下代码:
最后,我们在dataframe中的数据如下:
同样,您可以使用 BeautifulSoup 来实现各种其他类型的网络爬虫。这将简化从网页手动采集数据的工作。您还可以查看其他属性,例如 .parent、.contents、.descendants 和 .next_sibling、.prev_sibling 以及用于标签名称浏览的各种属性。这些将帮助您有效地抓取网络。
但是为什么我不能只使用正则表达式?
现在,如果您了解正则表达式,您可能会认为可以用它来编写代码来做同样的事情。当然,我也遇到了这个问题。我使用 BeautifulSoup 和正则表达式来做同样的事情,发现:
BeautifulSoup 中的代码比用正则表达式编写的更强大。用正则表达式编写的代码必须随着页面的变化而变化。虽然在某些情况下需要调整 BeautifulSoup,但相对来说,BeautifulSoup 更好。
正则表达式比 BeautifulSoup 快很多,同样的结果,正则表达式比 BeautifulSoup 快 100 倍。
因此,归结为速度和代码健壮性的比较,没有万能的赢家。如果您要查找的信息可以用简单的正则表达式语句捕获,那么您应该选择使用它们。对于几乎所有复杂的任务,我通常更推荐使用 BeautifulSoup 而不是正则表达式。
结束语
在本文中,我们使用两个 Python 库,BeautifulSoup 和 urllib2。我们还学习了HTML的基础知识,通过解决一个问题一步步实现了网络爬虫。我建议你练习一下,用它来采集网页数据。
原文发表时间为:2015-11-09
本文来自云栖社区合伙人《大数据文摘》。相关信息请关注“BigDataDigest”微信公众号