阅读本文大约需要 7 分钟

本文转载自zone7

概述

前言

思考

统计结果

爬虫技术分析

爬虫代码实现

爬虫分析实现

后记

前言

举国欢庆的国庆节马上就要到来了,你想好去哪里看人山人海了吗?还是窝在家里充电学习呢?说起国庆,塞车与爆满这两个词必不可少,去年国庆我在想要是我能提前知道哪些景点爆满就好了,就不用去凑热闹了。于是我开始折腾,想用 python 抓取有关出行方面的数据,便有了这篇文章。

弘扬一下社会主义核心价值观

思考

(此段可跳过)要抓取出行方面的数据还不简单,直接去看看携程旅游、马蜂窝这类网站看看有没有数据抓取。但是实际上这些网站并没有比较好的格式化的数据供我们抓取,或许是我没找到吧。我在想,有没有什么折中的办法。然而,就这样半天过去了,突然想到,要出行肯定会查找相关的出行攻略吧,那么关键词就是一个突破口,可以查询百度指数来看看哪些景点被查询的次数最多,那么就可以大概知道哪些景点会爆满了。

统计结果

此次的统计结果只是从侧面反映景点爆满的问题,未必是完全准确的,仅供参考。此次统计的景点共有 100 个:

桂林、三亚、泰山的搜索量都是杠杠的,这第一梯队的地方能不去就别去了,去了也是人山人海的,爆满是无疑的了。

捂脸.jpg

top0-10

第二梯队的搜索量也不差,日均搜索量还是上万的,谨慎行动。

top10-20

第三梯队下来就可以考虑考虑,为了避免不必要的塞车与等待,建议大家还是呆在家里吧!!!

top20-30

第四梯队应该没太大的问题,建议出去溜达溜达。

top30-40

都到第五梯队了,就可以放心地玩耍了。经历了那么多的烦心事,是该好好放飞一下自己了。

top40-50

爬虫技术分析

请求库:selenium

HTML 解析:使用正则匹配

数据可视化:pyecharts

数据库:MongoDB

数据库连接:pymongo

爬虫分析实现

此次文章能够实现参考效果,完全是因为抖机灵。首先是选取爬虫来源,携程与马蜂窝没有结构化的数据,我们就换一种思路。首先是想到百度指数,如图:

百度指数

但是,分析源代码之后,你就会发现坑爹之处了,它的数据都是以图片展示的,你不能直接获取到源码,考虑到国庆马上就要到来,我换了一个指数平台,转战搜狗指数,这个平台可以直接获取到源数据,关键是,还有微信热度可以爬取。当然,你执意要使用百度指数,这里也是有方法的,抓取到数据之后,使用图像识别来识别文中的数据,提供一篇有思路的文章 [爬虫实战——四大指数之百度指数(三)]。

关于数据清洗方面,这里筛选了数据量过小,和数据量异常大的景点,详情在源码中查看。

搜狗指数

# 这是数据展示的代码片段def show_data(self):    for index in range(5):        queryArgs = {"day_avg_pv": {"$lt": 100000}}        rets = self.zfdb.national_month_index.find(queryArgs).sort("day_avg_pv", pymongo.DESCENDING).limit(10).skip(index*10)        atts = []        values = []        file_name = "top" + str(index * 10) + "-" + str((index + 1) * 10) + ".html"        for ret in rets:            print(ret)            atts.append(ret["address"])            values.append(ret["day_avg_pv"])        self.show_line("各景点 30 天内平均搜索量", atts, values)        os.rename("render.html", file_name)

爬虫代码实现

由于篇幅原因,这就只展示主要代码,详情请查看源码,点击阅读原文获取源码。

# 这是数据爬取的代码片段def get_index_data(self):    try:        for url in self.get_url():            print("当前地址为:" + url)            self.browser.get(url)            self.browser.implicitly_wait(10)            ret = re.findall(r'root.SG.data = (.*)}]};', self.browser.page_source)            totalJson = json.loads(ret[0] + "}]}")            topPvDataList = totalJson["topPvDataList"]            infoList = totalJson["infoList"]            pvList = totalJson["pvList"]            for index, info in enumerate(infoList):                for pvDate in pvList[index]:                    print("index => "+str(index)+"地址 => "+info["kwdName"] + "日期 => " + str(pvDate["date"]) + " => " + str(pvDate["pv"]) + " => " + str(                        info["avgWapPv"]) + " => " + str(info["kwdSumPv"]["sumPv"]) + " => ")                    self.zfdb.national_day_index.insert({                        "address": info["kwdName"],  # 地名                        "date": pvDate["date"],  # 日期                        "day_pv": pvDate["pv"],  # 日访问量                    })                self.zfdb.national_month_index.insert({                    "address": info["kwdName"],  # 地名                    "day_avg_pv": info["avgWapPv"],  # 平均访问量                    "sum_pv": info["kwdSumPv"]["sumPv"],  # 总访问量                })    except :        print("exception")

后记

整篇爬虫文章分析到这里就结束,不过还是对百度指数很有执念,想找个时间写一篇相关的文章才行,不搞定它感觉心里有块疙瘩,或许这就是程序员最后的倔强,最后祝大家国庆假期愉快,不用写代码。

python画图代码100行_用100行Python代码告诉你国庆那些景点爆满!相关推荐

  1. 查什么攻略?百行 Python 代码告诉你国庆哪些景点爆满!

    作者 | zone7 责编 | 郭芮 举国欢庆的国庆节马上就要到来了,你想好去哪里看人山人海了吗?还是窝在家里充电学习呢?说起国庆,塞车与爆满这两个词必不可少,但是如果能提前知道哪些景点爆满就不用人挤 ...

  2. python数据分析师工作内容_小白入行数据分析师3年-工作内容复盘分享含代码(一)-Python篇介绍...

    前言 个人作为互联网行业数据分析师工作已有3年之久,日常工作中碰到过问题,也在解决的问题过程中学到了很多.作为组内技术较为资深的组员,也经常在周会中安排环节给组内人员进行知识分享,以及日常帮助同事解决 ...

  3. python画图程序没有图_解决python中使用plot画图,图不显示的问题

    解决python中使用plot画图,图不显示的问题 对以下数据画图结果图不显示,修改过程如下 df3 = {'chinese':109, 'American':88, 'German': 66, 'K ...

  4. c调用python脚本如何获取结果_使用C++调用Python代码的方法详解

    一.配置python环境问题 1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库 右击项目->属性-&g ...

  5. python自学行_有编程基础Python自学行吗?

    有编程基础Python自学行吗?目前Python比较火爆,计算机基础越好对学习Python新的编程语言越有利.大学计算机专业C语言不是很好的入门语言,理解起来有些抽象.零基础学Python很容易上手, ...

  6. python跑代码电脑卡住_在连续运行python代码时,最终导致我的计算机崩溃

    看起来,当我运行我的代码最初几次运行它运行得很好,但在大约第3次到第4次我运行它开始放慢速度.那是我的电脑变得没有反应,因为它似乎发展了一些滞后.最终,这会使我的计算机崩溃,使在空闲状态下编码变得困难 ...

  7. python 算法教程 pdf 英文_上手实践《Python机器学习第2版》PDF中文+PDF英文+代码+Sebastian...

    学习机器学习,推荐学习<Python机器学习(第二版)>. <Python机器学习(第2版)>,图文并茂,代码详实,原理清晰,覆盖面适度,侧重算法实现和应用,作为入门级学习还是 ...

  8. python标题行_添加标题行_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...

    为什么学Python: 重要:数据分析是职业技能必备,Python是大数据分析** 趋势:Python是目前非常火的编程语言,使用人多 好学:学习简单,容易上手,使用灵活,可扩展强 **:会Pytho ...

  9. python实现键盘自动输入_人生苦短我用Python——模拟鼠标点击和键盘输入的操作...

    通过Python可以模拟鼠标点击和键盘输入的操作,进而可以实现一些比较有趣的功能,例如游戏挂机.自动发消息等. 本文以自动发消息为例,实现该功能,通过该代码可以自动往QQ.微信发送任意内容.首先考虑想 ...

最新文章

  1. CSS深入理解之margin
  2. fir滤波器c++程序_电气信息类专业课程之matlab系统仿真 第三章 滤波器的种类(1)...
  3. 全新 Win 9 概念 界面漂亮极了
  4. XgBoost使用及调参教程
  5. 高性能实践IO之Reactor模式
  6. 什么是AES算法?(整合版)
  7. Oracle数据库安装时 environment variable path 大于 1023
  8. python cad二次开发文档_AutoCAD二次开发&实现简单的自动编号
  9. Java 读取excel文件并导入数据库
  10. python线性回归预测波士顿房价_预测波士顿的房价|简单的线性回归入门
  11. flask Not Found The requested URL 20211207
  12. 被哈佛录取后,他骑行4300公里旅行回家
  13. flv.js解决直播流延迟、断流重连以及画面卡死
  14. AIX对硬件在线做diag诊断
  15. 泰勒求三角函数近似值
  16. 张驰咨询:快速提高流程效率的5个关键精益生产工具
  17. 2021-11-10----韩顺平Java入门第七天
  18. 可测量面积的谷歌地球卫星软…
  19. Anroidstudio安装
  20. 我想到一种办法可以穿越到过去

热门文章

  1. google earth engine (GEE)面向对象分类 代码
  2. ecshop图片自动本地化插件,ECSHOP下载商品图片,ECSHOP商品详情远程图片,ecshop商品远程图片保存,ecshop图片自动本地化插件,商品图片本地化
  3. 收藏别人的《设计模式》
  4. 考研秘籍——考研流程及初试备战
  5. Python 随堂练习
  6. 假设一个C语言程序中包含a=b c,C语言程序中a=b==c是什么意思
  7. Place_opt步骤详细解析(另附两周年活动中奖名单)
  8. win10远程桌面连接ubuntu20(RDP)
  9. 一个人开发手游有多难
  10. python自动翻译pdf_在Python中自动执行PDF