python真有那么神奇吗,python百度贴吧

  python真有那么神奇吗,python百度贴吧

  点击上面的Python知识圈,选择“设为明星”

  回复“1024”获取编程资料。

  图片来自Pexels

  读这篇课文大约需要6分钟。

  文化和旅游部表示,预计2019年国庆旅游人数有望达到近8亿人次。#国庆假期可能有近8亿人次出行#这个话题也登上了微博热搜榜。

  我好像见过假日景区的人潮!

  想想,最后还是留在了国庆假期游。可以用网络爬虫看看国庆假期哪些城市最堵吗?哪些景点最火?

  今天我们就来看看国庆期间如何利用网络爬虫生成旅游热点。

  需求概念

  制作旅游热点地图。我们想要达到的效果是在中国地图上标出旅游热点。

  从这张图可以知道哪些城市或地区是十一五期间的旅游热点。也就是说国庆期间去玩的人多的地方。

  概念图

  首先,我们正在寻找获取全国旅游信息的数据源。这里有一个预订信息的想法。哪些景点预订多,这些景点所在的城市就越受欢迎。类似的票务网站还有很多,比如携程、去哪儿、途牛旅游等等。

  然后,我们需要分析网站上的票务数据,顺着我们感兴趣的热门旅游信息往下爬。信息分析的重点是对网页上HTML信息的分析。

  之后,分析后的信息会按照一定的格式保存在本地。由于下载的信息可能与最终显示的信息不同,因此需要进行一些数据清理和数据聚合操作。

  最后,将整理好的信息输入地图并显示出来,这也是展示的最后一部分。在这里,您可以选择外部显示的方式,如点状图、线状图或热图。

  网络分析

  全局预览

  找了一圈旅游网站,发现在“去哪儿”的门票页面里,有一个旅游景点人气的展示信息。

  网页会根据不同类型的景点(自然风光、文化古迹等)进行查询。),并且查询结果会显示景点名称、景点人气和城市信息。

  如果把这些景点对应的区域的热度汇总一下,就可以知道哪些区域对应了景点的热度。

  先打开去哪儿旅游,搜索“热点”。下面列出了各地的热门旅游景点。

  根据景点主题,显示列表中有景点名称、景点级别、所在省市、热度。其中,省份、城市、热点是我们关心的数据。

  URL 分析

  URL分析图

  打开Chrome的开发者工具,查看HTML页面的结构。URL的规则很容易理解:

  Keyword就是“热门景点”,是一个常量,每次请求时都要填写。

  Subject 是景点分类,比如:自然风光,游乐园,文化古迹等等。这个需要一一列举。它存储在变量后的数组中。

  Page 是页数,如果要抓取所有信息,需要一页一页往下翻,所以这个数字会一直增长。当您滑动到页面底部时,您将看到“下一页”按钮,通过该按钮您可以遍历所有页面。

  URL全景

  页面元素分析

  通过Chrome开发者工具中的元素选择器,可以清晰的看到元素的HTML标签。

  列表元素图

  由于景点信息放在一个列表中,所以找到列表所在的元素,放在id为“search-list”的div中。

  也就是说,在请求URL并获得HTML之后,我需要找到“search-list”div并获得相应的项目信息。

  获取列表元素后,我们来看看如何获取每个旅行记录中的值。其内容放在“sight_item”的div中。

  列表中每个项目的示意图

  接下来分别对景区的名称、级别、省份、城市、热度、地址进行分析。并记录它们的元素值,这些值可以在以后解析HTML时使用。

  元素的HTML标签类似于上面两个元素。可以先记录上述元素的ID或类,稍后解析HTML时会用到。

  爬行动物制剂

  构思和分析已经完成,我们需要编写代码来实现这个想法。但是,在此之前,我们需要准备好开发环境和工具。

  因为涉及到网络爬虫和图形显示。所以在这里我们计划使用Python作为开发语言,PyCharm作为IDE环境,Pyecharts作为显示图表。

  普及Pyecharts,echarts是百度开源的数据可视化。凭借良好的交互性和精美的图表设计,得到了众多开发者的认可。

  Python是一种表达性语言,非常适合数据处理。当数据分析遇上数据可视化,Pyecharts就诞生了。

  所以PyEcharts可以理解为一个用Python实现的Echarts程序,可以在Python上运行,很好的展示地理信息。

  Pyecharts图标

  另外Pyecharts有强大的地理展示功能,这是我们需要利用的。

  Pyecharts展示了中国地图。

  我们使用BeautifulSoup解析HTML。它是一个Python库,可以从HTML或XML文件中提取数据。它可以通过你喜欢的转换器实现通常的文档导航、搜索和修改方式。

  官网美图

  爬虫编码

  一切只因东风。我们开始写代码吧。国庆搬砖让我开心。这里我们把程序分为两部分,一部分是抓取旅游热点信息,另一部分是展示旅游热点地图。

  爬取旅游热点信息

  程序流程图

  先说获取旅游热点信息的思路,分为四个步骤:

  开始准备必要的文件,引入组件包。

  组合可变URL并发出网络请求。如果请求失败,请重试。

  下载HTML后,进行分析,找到旅游热点和列表项列表,分析具体的旅游信息。

  将分析的信息保存到csv文件中。

  因为我们需要请求网络、解析HTML和保存文件,所以我们需要引入一些Python包:

  网络请求

  解析HTML

  读写csv

  在请求头中伪装浏览器。

  错误,重试,等待时间

  下一步是创建请求头,包括浏览器、语言和请求格式。

  这里我们使用fake_useragent中UserAgent的random方法来随机生成浏览器信息。

  这样,在模拟浏览器访问网站时,每个请求都会随机模拟一个浏览器。比如:IE,火狐,Chrome等等。让网站认为不同的人使用不同的浏览器访问网站。

  接下来,生成一个csv文件,并以utf-8格式保存。该文件用于存储爬虫信息。

  在文件的头中,我们定义了与景点相关的字段,如“区域”和“名称”。这些列是在生成文件时准备的,在填写数据后可以很容易地查看。

  定义一个下载景点内容的函数。这个函数接受URL作为参数,然后通过requests对象下载景区内容。

  因为下载信息可能会遇到网络问题,所以下载失败。因此,我们需要定义一个下载失败函数,以便在下载失败时重试下载。

  还记得前面分析的网址吗?景点的类型和分页都是变量。这里我们定义一个函数来生成URL来处理这些变量。

  我们会列出需要搜索的景点类型。关键字字段已被转换为ACSII代码。如果需要直接输入汉字,可以使用from urllib.parse导入引号来实现。

  另外,我们对开始搜索的页面使用page=1,然后我们会解析页面中的“下一步”按钮来完成翻页功能。

  好了,到目前为止我们已经定义了文件、下载函数、重试下载函数、分类收集函数,现在我们要定义最重要的HTML解析函数。它的输入参数是景点类型和URL地址。

  依次执行以下任务:

  下载HTML,转换成SOUP对象。

  查找旅游景点列表。找到id为“search-list”的div的元素。用soup的find方法来找。

  穿越景区项目。在“search-list”元素下,通过findAll方法找到类为“sight _ item”的项目,并遍历它。

  分析具体景点信息:名称、区域、省市、热度、地址等。

  找到翻页按钮,继续下载下面的页面,再次解析。通过Find方法找到其类为“next”的A标签。

  最后,执行main函数来运行整个Python程序:

  完成的csv图表

  Csv看起来很乱。通过xls打开文件,查看格式化后的热点信息:

  组织未来的旅游热点。

  旅游热点地图展示

  旅游热点的信息已经抓到了,现在该分析了。在这里,建议将捕获和分析工作分为两部分。

  因为,在爬取的过程中,会出现网络问题、解析问题或者反爬虫问题,爬取数据需要一定的时间。

  为了保证其独立性,信息捕获可以独立运行。完成后,将捕获的文件作为输入放入显示程序中运行。

  显示程序主要完成,数据清理,汇总汇总,地图显示。这样,前面的爬虫和后面的分析显示就融为一体了。

  旅游热点分析流程图

  首先还是要介绍几个Python包,如下。Geoopts和ChartType用于显示地图。

  其次,我们需要加载csv文件。虽然我们下载了很多资料,但是对我们来说最重要的还是各省市和热点地区的信息。因为我们最终展现的是哪个城市是旅游的热点。

  城市,热度信息图

  据观察,为了计算一个城市的热度,需要对城市信息进行分组汇总,这也是需要考虑的。

  根据城市信息汇总热量

  通过过滤掉地图中一些无法识别的地方和一些没有热值的脏数据,可以将生成的城市和热量列表传递给显示函数。

  最后,显示函数接收列表参数并绘制热图:

  结果分析

  让我们来看看哪些地区是热门旅游目的地,如下图:

  2019国庆旅游热力图

  从图中可以看出,北京、沿海地区(福建、广州)、江苏、浙江、甘肃是国庆期间的热门景点。中部地区的武汉也因为临近的军事运动会而成为热门旅游城市。

  2019国庆旅游热点图

  让我们来看看排名前20的旅游热点,如下图:

  5A排名前20的旅游景点:

  摘要

  爬虫思维导图

  网络爬虫之前,需要根据达成的目标进行构思,包括:网站选择、网站分析、数据抓取、数据展示。

  在分析网站时,需要注意以下几点,包括全局分析、URL分析和元素分析。

  爬虫编程前,需要做好工具、IDE、Python类库的准备。爬虫编码包括抓取旅游热点信息和展示旅游热点地图。

  留言打卡 DAY 10

  今天的留言主题是:十一你有什么打算?你有旅行计划吗?你去过多少受欢迎的景点?消息打卡规则请参考消息打卡福利(点击链接查看详细打卡规则)。请以昵称+天数(请参考你实际打卡的天数,如第1天或第2天或第3天)的形式留言留言内容(不少于15个字)。

  先前的建议

  01

  漫画:什么是插入排序?

  02

  23 Python爬虫项目代码:抓取微信、淘宝、知乎、微博等。

  03

  收藏!构建Python核心知识体系的14张思维导图

  我觉得很好。点击右下角的。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: