网页抓取数据 免费(本文为你演示如何从网页里找到感兴趣的链接和说明文字)

优采云 发布时间: 2022-03-30 03:15

  网页抓取数据 免费(本文为你演示如何从网页里找到感兴趣的链接和说明文字)

  你期待已久的 Python 网络数据爬虫教程就在这里。本文向您展示了如何从网页中查找感兴趣的链接和描述,并在 Excel 中抓取和存储它们。

  需要

  许多评论是读者的问题。只要我有时间,我会尝试回答它。

  但是,有些消息乍一看并不清楚。

  比如这个:

  

  过了一分钟,他可能觉得不妥(可能是他记起来了,我用简体写了文章),于是又用简体发了一遍。

  我突然意识到。

  抱歉,我当时没有写 crawler文章。

  主要是因为我懒。

  这类新闻收到不少,也能体会到读者的需求。不止一位读者对爬虫教程表示了兴趣。

  如前所述,目前主流且合法的网络数据采集方式主要分为三类:

  前两种方法我已经介绍过了,这次就讲爬虫。

  概念

  很多读者对爬虫的定义有些混淆。我们需要对其进行分析。

  维基百科是这样说的:

  网络爬虫,也称为网络蜘蛛,是一种用于自动浏览万维网的网络机器人。它的目的通常是编译一个网络索引。

  这就是问题。你不打算成为搜索引擎,那你为什么对网络爬虫如此热衷?

  事实上,许多人所说的网络爬虫与另一个功能“网络抓取”相混淆。

  在维基百科上,后者是这样解释的:

  Web 抓取、Web 采集或 Web 数据提取是用于从网站中提取数据的数据抓取。Web 抓取软件可以使用超文本传输​​协议或通过 Web 浏览器直接访问万维网。

  看不,即使您使用浏览器手动复制数据,也称为网络抓取。你是不是立刻感觉强壮了很多?

  但是,这个定义并不完整:

  虽然网络抓取可以由软件用户手动完成,但该术语通常是指使用机器人或网络爬虫实现的自动化流程。

  换句话说,使用爬虫(或机器人)自动为您完成网络抓取工作是您真正想要的。

  你用数据做什么?

  通常,它首先存储并放置在数据库或电子表格中以供检索或进一步分析。

  所以,你真正想要的功能是:

  找到链接,获取网页,抓取指定信息,存储。

  这个过程可能会来回走动,甚至滚雪球。

  你想自动化它。

  知道了这一点,你就可以停止盯着爬虫了。实际上,爬虫是为搜索引擎索引数据库而开发的。为了获取一些数据并使用它,你已经在轰炸蚊子了。

  要真正掌握爬虫,你需要有很多基础知识。例如 HTML、CSS、Javascript、数据结构……

  这也是我一直犹豫要不要写爬虫教程的原因。

  不过这两天看到王朔编辑的一段话,很有启发性:

  我喜欢讲一个二十八的替代法则,即投入20%的努力,理解一件事的80%。

  既然我们的目标很明确,那就是从网络上抓取数据。那么你需要掌握的最重要的能力就是如何在获得网页链接后快速有效地抓取你想要的信息。

  掌握了之后,就不能说你学会了爬行。

  但是有了这个基础,您可以比以往更轻松地获取数据。尤其是对于“文科生”的很多应用场景来说,是非常有用的。这是赋权。

  此外,进一步了解爬虫的工作原理变得容易得多。

  这也是“替代 28 规则”的应用。

  Python 语言的重要特性之一是强大的软件工具包的可用性(许多由第三方提供)。您只需要编写一个简单的程序即可自动解析网页并抓取数据。

  本文向您展示了该过程。

  目标

  要抓取网络数据,让我们从一个小目标开始。

  目标不能太复杂。但是这样做,它应该可以帮助您了解 Web Scraping。

  只需选择我最近发布的一本简短的书文章作为要抓取的对象。题目叫“如何使用《玉树之兰》开始数据科学?”。

  在这个文章中,我重新组织并串起了我之前的数据科学系列文章。

  文本收录许多以前教程的标题和相应的链接。例如下图中红色边框圈出的部分。

  假设你对文中提到的教程感兴趣,想获取这些 文章 链接并将它们存储在 Excel 中,如下所示:

  您需要专门提取和存储非结构化的分散信息(自然语言文本中的链接)。

  我们对于它可以做些什么呢?

  即使不会编程,也可以通读全文,逐一找到这些文章链接,手动复制文章标题和链接,保存在Excel表格中。

  但是,这种手动 采集 方法效率不高。

  我们使用 Python。

  环境

  安装 Python 最简单的方法是安装 Anaconda 包。

  请到此 URL 下载最新版本的 Anaconda。

  请选择左侧 Python 3.6 版本下载安装。

  如果您需要具体的分步说明,或者想知道如何在 Windows 上安装和运行 Anaconda 命令,请参考我为您准备的视频教程。

  安装 Anaconda 后,请到本网站下载本教程的 zip 包。

  下载解压后,会在生成的目录(以下简称“demo目录”)中看到如下三个文件。

  打开终端,使用 cd 命令进入 demo 目录。如果不知道怎么使用,也可以参考视频教程。

  我们需要安装一些环境依赖。

  首先执行:

  1pip install pipenv

2

3

  这里安装了一个优秀的 Python 包管理工具 pipenv。

  安装后执行:

  1pipenv install

2

3

  看到 demo 目录下两个 Pipfile 开头的文件了吗?它们是 pipenv 的设置文档。

  pipenv 工具会根据它们自动为我们安装所有需要的依赖项。

  上图中有一个绿色的进度条,表示要安装的软件数量和实际进度。

  安装完成后,按照提示执行:

  1pipenv shell

2

3

  请在此处确保您的计算机上安装了 Google Chrome 浏览器。

  我们执行:

  1jupyter notebook

2

3

  将打开默认浏览器(谷歌浏览器)并启动 Jupyter notebook 界面:

  可以直接点击文件列表中的第一个ipynb文件查看本教程的全部示例代码。

  您可以在观看教程时一个接一个地执行这些代码。

  但是,我推荐的方法是回到主界面并创建一个新的空白 Python 3 笔记本。

  请按照教程逐字输入对应的内容。这可以帮助你更深入地理解代码的含义,更有效地内化技能。

  准备工作结束了,我们开始正式输入代码。

  代码

  读取网页进行解析和爬取,需要的包是requests_html。我们这里不需要这个包的全部功能,只需阅读其中的 HTMLSession 即可。

  1from requests_html import HTMLSession

2

3

  然后,我们建立一个会话(session),也就是让Python充当客户端,与远程服务器对话。

  1session = HTMLSession()

2

3

  如前所述,我们打算采集信息的网页是“如何使用“玉树之兰”开始数据科学?”一文。

  我们找到它的 URL 并将其存储在 url 变量名中。

  1url = 'https://www.jianshu.com/p/85f4624485b9'

2

3

  下面的语句使用session的get函数来获取这个链接对应的整个网页。

  1r = session.get(url)

2

3

  页面上有什么?

  我们告诉 Python 将服务器返回的内容视为 HTML 文件类型。我不想看 HTML 中乱七八糟的格式描述符,只看文本。

  所以我们执行:

  1print(r.html.text)

2

3

  这是得到的结果:

  我们心中有它。检索到的网页信息正确,内容完整。

  好吧,让我们看看如何接近我们的目标。

  我们首先使用一种简单粗暴的方法来尝试获取网页中收录的所有链接。

  使用返回的内容作为 HTML 文档类型,我们查看 links 属性:

  1r.html.links

2

3

  这是返回的结果:

  这么多链接!

  兴奋的?

  然而,你注意到了吗?这里有很多链接,看起来不完整。比如第一个结果,只有:

  1'/'

2

3

  这是什么?链接爬错了吗?

  不,这种看起来不像链接的东西叫做相对链接。它是一个链接,相对于我们的 采集 网页所在的域名 ( ) 的路径。

  这就好比我们在中国寄快递的时候,填表的时候一般会写“XX市,XX省……”,前面就不用加国名了。只有国际快递需要写国名。

  但是,如果我们想获得所有可直接访问的链接怎么办?

  这很简单,只需要一个 Python 语句。

  1r.html.absolute_links

2

3

  在这里,我们想要“绝对”链接,所以我们得到以下结果:

  这次是不是看起来舒服多了?

  我们的使命完成了吗?不是所有的链接都在这里吗?

  链接确实在这里,但它与我们的目标不同吗?

  检查一下,确实如此。

  我们不仅要找到链接,还要找到链接对应的描述文字。是否收录在结果中?

  不。

  结果列表中的链接是我们所需要的吗?

  不。从长度来看,我们可以看出很多链接不是在文本中描述其他数据科学的 URL。

  这种直接列出 HTML 文件中所有链接的简单粗暴的方法不适用于此任务。

  那么我们应该怎么做呢?

  我们必须学会告诉 Python 我们在寻找什么。这是网络抓取的关键。

  想一想,如果你想让一个助手(人类)为你做这件事呢?

  你会告诉他:

  "找到文字中所有可点击的蓝色文字链接,将文字复制到Excel表格中,然后右键复制对应的链接,复制到Excel表格中。每个链接在Excel中占一行,文字和链接每个占用一个单元格。”

  虽然这个操作执行起来比较麻烦,但是助手理解之后,就可以帮你执行了。

  一样的描述,试着告诉电脑……对不起,它不明白。

  因为你和你的助手看到的网页是这样的。

  电脑看到的网页是这样的。

  为了让你看清源代码,浏览器还使用颜色来区分不同类型的数据,并对行进行编号。

  当数据显示到计算机时,上述辅助视觉功能不可用。它只能看到字符串。

  那我们能做什么呢?

  仔细看会发现,在这些HTML源代码中,文字和图片链接的内容前后,都会有一些用尖括号括起来的部分,称为“标记”。

  HTML 是一种标记语言(HyperText Markup Language)。

  标签的目的是什么?它可以将整个文档分解为层。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线