由于涉及到网络爬虫,以及图形的展示。所以这里计划使用 Python 作为开发语言,IDE 环境使用 PyCharm,展示图表用到 Pyecharts。
普及一下 Pyecharts,Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。
而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,Pyecharts 就诞生了。
因此,Pyecharts 可以理解为用 Python 来实现的 Echarts 程序,可以在 Python 上面运行,并且提供良好的地理信息展示。
 
 
Pyecharts 图标
另外 Pyecharts 的地理展示功能比较强大,这点也是我们需要利用的。
 
 
Pyecharts 展示中国地图
针对 HTML 的解析我们使用了 BeautifulSoup。它是一个可以从 HTML 或 XML 文件中提取数据的 Python 库,它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。
 
 
BeautifulSoup 官网图片
爬虫编码
万事具备只欠东风,让我们开始写代码吧,为国庆搬砖让我快乐。这里我们把程序分成两个部分来写,一部分是爬取旅游热点信息,另一部分是旅游热点地图展示。
爬取旅游热点信息
 
 
程序流水图
先说一下获取旅游热点信息的思路,大约分为四步:  开始准备必要的文件和引入组件包。 组合变量 URL 并且做网络请求,请求不成功进行重试。 下载 HTML 以后对其进行解析,找到旅游热点列表,列表项,分析具体旅游信息。 把分析完的信息保存到 csv 文件中。 
因为我们需要请求网络,解析 HTML,保存文件,所以需要引入一些 Python 的包:  网络请求 HTML 解析 读写 csv 在请求头中伪装浏览器 错误重试,等待时间 
 
 
接下来就是创建请求头,请求头中包括了请求的浏览器,语言,请求格式等信息。
这里我们是使用 fake_useragent 中 UserAgent 的 random 方法随机产生浏览器的信息。
这样在模拟浏览器访问网站的时候,每次请求都会随机模拟一种浏览器。例如:IE,Firefox,Chrome 等等。让网站认为是不同的人,用不同的浏览器来访问网站的。
 
 
接下来生成一个 csv 文件,用 utf-8 格式保存。这个文件是用来存放爬虫信息。
在文件的表头,我们分别定义了,“区域”,“名称”等和景点相关的字段。在文件生成的时候就准备好这些列,等填入数据以后,可以方便查看。
 
 
定义一个下载景点内容的函数,这个函数接受 URL 作为参数,然后通过 requests 对象下载景点内容。
 
 
由于下载信息可能会遇到网络问题,导致下载失败。所以,我们需要定义一个下载失败函数,在下载不成功的时候重试下载。
 
 
还记得之前分析的 URL 吗?景点的类型和分页是变量,这里我们定义一个生成 URL 的函数来处理这些变量。
我们会罗列需要搜索的景点类型在其中。Keyword 字段已经转换成 ACSII 码了,如果需要直接输入中文字符,可以使用 from urllib.parse import quote 来实现。
另外,我们的开始搜索的页面,使用 page=1,之后会解析页面中的“next”按钮,完成翻页的功能。
 
 
好了,到此我们定义了文件,下载函数,重试下载函数,分类搜集函数,现在要定义最重要的 HTML 解析函数了。它的输入参数是景点类型和 URL 地址。
依次执行以下工作:  下载 HTML,并且转换成 SOUP 对象。 找到旅游景点的列表。找到 div 的 id 为‘search-list’的元素。用 soup 的 find 方法找到它。 针对景点的项目进行遍历。在‘search-list’元素下面,通过 findAll 方法找到 class 是‘sight_item’的项目,并且对其进行遍历。 解析具体景点信息:名称,区域,省市,热度,地址等等。 找到翻页按钮,继续往下载后面的页面,并且再

下一页 上一页
返回列表
返回首页
©2024 人工智能世界_专注人工智能领域,汇集人工智能技术资料 电脑版
Powered by iwms