编程类图书馆

100行Python代码,帮你分析国庆应该去哪里玩才是最好的选择

2018-09-30  本文已影响4人  _年少无为

小编有自己的Python学习交流群:865597862 !进群免费获取2018最新的Python学习资料!文档、视频!安排!!!!

统计结果

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

有需要Python学习资料的小伙伴吗?小编整理【一套Python资料、源码和PDF】,感兴趣者可以关注小编后私信学习资料(是关注后私信哦)反正闲着也是闲着呢,不如学点东西啦

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

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

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

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

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

爬虫技术分析

爬虫分析实现

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

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

# 这是数据展示的代码片段
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学习交流群:865597862 !进群免费获取2018最新的Python学习资料!文档、视频!安排!!!!

上一篇 下一篇

猜你喜欢

热点阅读