首页 » 网站建设 » phphtml抓取技巧_运用Python进行网页抓取的介绍

phphtml抓取技巧_运用Python进行网页抓取的介绍

duote123 2024-12-03 0

扫一扫用手机浏览

文章目录 [+]

网页抓取是一种主要的技能,常常在许多不同的环境中利用,尤其是数据科学和数据挖掘。
Python在很大程度上被认为是网络抓取的首选措辞,其缘故原由在于Python的内嵌电池特性。
利用Python,您可以在大约15分钟内利用不到100行代码创建一个大略的抓取脚本。
因此,无论何种用场,网页抓取都是每个Python程序员必须具备的技能。

在我们开始动手之前,我们须要退后一步,考虑什么是网页抓取,什么时候该当利用它,何时避免利用它。

phphtml抓取技巧_运用Python进行网页抓取的介绍 phphtml抓取技巧_运用Python进行网页抓取的介绍 网站建设

如您所知,网页抓取是一种用于从网站自动提取数据的技能。
主要的是要理解,网页抓取是一种从各种来源(常日是网页)中提取数据的粗略技能。
如果网站的开拓职员足够年夜方地供应API来提取数据,那么访问数据将是一种更加稳定和健壮的办法。
因此,根据履历,如果网站供应API以编程办法检索其数据,请利用它。
如果API不可用,则只能利用网络抓取。

phphtml抓取技巧_运用Python进行网页抓取的介绍 phphtml抓取技巧_运用Python进行网页抓取的介绍 网站建设
(图片来自网络侵删)

请务必遵守有关您利用的每个网站的网页抓取的任何规则或限定,由于有些网站不许可这样做。
有了这个清楚的认识,让我们直接进入教程。

在本教程中,我们将抓取http://quotes.toscrape.com/,这是一个列出着名作家名言的网站。

网页抓取管道

我们可以将web-scraping理解为包含3个组件的管道:

下载:下载HTML网页

解析:解析HTML并检索我们感兴趣的数据

存储:以特定格式将检索到的数据存储在本地打算机中

下载HTML

从网页中提取任何数据,从逻辑上讲,我们首先要下载它。
我们有两种方法可以做到这一点:

1.利用浏览器自动化库

您可以利用Selenium等浏览器自动化库从网页下载HTML。
Selenium许可您打开浏览器,比方说Chrome,并根据须要掌握它。
您可以在浏览器中打开网页,然后利用Selenium自动获取该页面的HTML代码。

但是,这种方法有一个很大的缺陷 - 它明显变慢。
缘故原由是运行浏览器并在浏览器中呈现HTML的开销。
此方法仅运用于分外情形 - 我们要抓取的内容在浏览器中利用JavaScript代码,或者哀求我们单击按钮/链接以获取数据,Selenium可以为我们实行此操作。

2.利用HTTP库

与第一种方法不同,HTTP库(例如Requests模块或Urllib)许可您发送HTTP要求,完备不须要打开任何浏览器。
这种方法该当始终是首选,由于它比Selenium快得多。

现在让我见告您如何利用Selenium和Requests库实现管道这个组件:

利用Requests

利用以下命令安装Requests模块:

现在您可以在代码中利用它,如下所示:

这里,对URL进行HTTP GET要求,这险些与下载网页同义。
然后,我们可以通过访问requests.get方法返回的结果工具来获取页面的HTML源代码。

利用Selenium

您可以通过pip安装selenium模块:

在这里,我们首先创建一个表示浏览器的webdriver工具。
这样做会在运行代码的打算机上打开Chrome浏览器。
然后,通过调用webdriver工具的get方法,我们可以打开URL。
末了,我们通过访问webdriver工具的page_source属性来获取源代码。

在这两种情形下,URL的HTML源都作为字符串存储在page变量中。

解析HTML和提取数据

不必深入打算机科学理论,我们可以将解析定义为剖析字符串的过程,以便我们可以理解其内容,从而轻松访问个中的数据。

在Python中,有两个库可以帮助我们解析HTML:BeautifulSoup和Lxml。
Lxml是一个比BeautifulSoup更低级的框架,我们可以在BeautifulSoup中利用Lxml作为后端,因此对付大略的HTML解析,BeautifulSoup将是首选的库。

但在我们深入剖析之前,我们必须剖析网页的HTML,看看我们想要抓取的数据是如何构建和定位的。
只有当我们节制了这些信息时,我们才能从解析的HTML中获取我们想要的信息。
但幸运的是,我们不必在编辑器中打开源代码,并手动理解每个HTML元素并将其与渲染页面中的相应数据干系联。
大多数浏览器都供应了一个检讨器,比如Chrome的开拓职员工具,它使我们只需单击它们即可快速查看任何元素的HTML代码。

要在Chrome中实行此操作,请在Chrome中打开网页,然后右键单击要抓取的数据,然后选择“检讨”。
在Firefox中,此选项称为Inspect Element - 这是在做相同的事情,但只是名称不同。

您会把稳到Chrome窗口底部打开了一个窗格,个中包含您单击的元素的源代码。
浏览一下源代码,理解我们想要抓取的数据是如何在HTML代码中构建的。

经由一些检讨后你可以理解,http://quotes.toscrape.com/上的每个引用都包含在一个带有class =“quote”属性的div中。
在该div中,引用的文本在class =“text”的范围内,作者的名称在class =“author”的小标签中。
当我们实际解析HTML并提取数据时,将须要此信息。

现在,让我们开始利用BeautifulSoup解析HTML页面。
但首先,我们必须安装它:

安装好之后,可以像下面这样在代码中调用:

首先,我们通过将页面通报给BeautifulSoup类布局函数来创建页面的解析版本。
如您所见,我们还将第二个参数html.parser通报给布局函数。
这是Beautiful Soup将用于解析通报给它的字符串的解析器的名称。
你可以利用我们之前谈到过的解析器lxml,由于你已经安装了Lxml库。

然后,我们提取包含class =“quote”的页面中的所有div标签,由于我们知道这些是包含引用的div。
为此,Beautiful Soup 4供应了find_all功能。
我们将标记名称和类名称通报给find_all函数,并返回知足条件的所有标记,即包含引用的标记。

这里须要把稳的一件主要事情是,我们在这里利用树构造。
变量soup以及引用的每个元素都是树。
在某种程度上,引用的元素是较大的soup树的一部分。
无论如何,为避免进入不同的谈论,让我们连续。

我们知道引用的文本是带有class =“text”的span标记,而作者是带有class =“author”的小标记。
要从quote元素中提取它们,我们再次利用类似的函数find。
find函数利用与find_all函数相同的参数。
唯一的差异是它返回知足条件的第一个标记,而find_all返回标记列表。
此外,我们希望访问返回工具的text属性,该工具包含该标记中包含的文本。

因此,正如您在代码中看到的那样,我们遍历列表引用的所有元素,并提取引用文本和作者名称,将它们存储在名称为scraped的列表。
在掌握台上打印时,已抓取的列表如下所示:

存储检索的数据

一旦我们得到了数据,我们就可以以任何我们想要的格式存储它,例如CSV文件,SQL数据库或NoSQL数据库。
严格来说,这一步不应算作抓取过程的一部分,但为了完全起见,我将简要先容它。

我想说最盛行的存储抓取数据的方法是将它们存储为CSV电子表格,以是我将简要先容如何做到这一点。
我不会详细先容,由于您该当参考官方的Python文档。
以是,不用多说,让我们看看代码。

我们可以看到,代码非常明显。
我们从打开的quotes.csv文件创建一个CSV编写器工具,然后利用writerow函数逐个写入引用。
很明显,writerow函数接管一个列表作为输入,然后将其作为一行写入CSV。

结论和后续步骤

本教程该当帮助您理解在学习自己实现大略的scraper时基本上是什么。
这种抓取该当足以实现大略的自动化或小规模数据检索。
但是如果你想有效地提取大量数据,你该当研究一下抓取框架,特殊是Scrapy。
它可以帮助您利用几行代码编写非常快速,高效的scraper。
无论你利用什么样的框架,在那个闪亮的表面下面,框架也利用这些非常基本的抓取原则,以是理解本教程该当可以帮助你为开始抓取的探险建立根本知识。

英文原文:https://stackabuse.com/introduction-to-web-scraping-with-python/ 译者:javylee
标签:

相关文章

介绍衣设计素材网站,创意之源,时尚之窗

随着互联网的普及,各类设计素材网站如雨后春笋般涌现。在众多素材网站中,衣设计素材网站凭借其丰富的资源、专业的服务,成为了设计师们不...

网站建设 2024-12-05 阅读0 评论0