集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Python >

成都比较好的python培训详解:用Python进行网页抓取

发布者: 成都达内     浏览次数:     发布时间:2018-12-25 09:42:40

网页抓取是一种重要的技术,经常在许多不同的环境中使用,尤其是数据科学和数据挖掘。 Python在很大程度上被认为是网络抓取的首选语言,其原因在于Python的内嵌电池特性。 ...

  成都比较好的python培训详解:用Python进行网页抓取

  介绍

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

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

  如您所知,网页抓取是一种用于从网站自动提取数据的技术。 重要的是要理解,网页抓取是一种从各种来源(通常是网页)中提取数据的粗略技术。 如果网站的开发人员足够慷慨地提供API来提取数据,那么访问数据将是一种更加稳定和健壮的方式。 因此,根据经验,如果网站提供API以编程方式检索其数据,请使用它。 如果API不可用,则只能使用网络抓取。

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

  在本教程中,我们将抓取一个列出着名作家名言的网站。

  网页抓取管道

  我们可以将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模块:

  用Python进行网页抓取

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

  成都Python培训哪家好

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

  使用Selenium

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

  成都Python培训机构哪家好

  在这里,我们首先创建一个表示浏览器的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 - 这是在做相同的事情,但只是名称不同。

  成都Python周末班

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

  成都Python培训班哪个好

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

  成都python培训学费

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

  成都python快速入门培训

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

  成都python在线学习课程

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

  成都python在线学习课程

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

  这里需要注意的一件重要事情是,我们在这里使用树结构。 变量soup以及引用的每个元素都是树。 在某种程度上,引用的元素是较大的soup树的一部分。 无论如何,为避免进入不同的讨论,让我们继续。

  成都比较好的python培训

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

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

  成都python周末培训

  存储检索的数据

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

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

  成都比较好的python培训详解:用Python进行网页抓取

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

  结论和后续步骤

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

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:绵阳市涪城区临园路东段68号富临大都会7栋3单元9层12号

联系电话:15023458194

公交路线:富乐路口凯德广场(10路;29路;3路;15路;11路;15a路;71路)

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市人民南路一段86号“城市之心”大厦26楼

联系电话:15023458194

公交路线:成都市人民南路(6路;14路;42路;72路;76路;1010路;)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56