Py学习  »  Python

单身狗用python写了个国庆景点推荐,妹子再也不担心去哪了...

数据挖掘与大数据分析 • 6 年前 • 843 次点击  

作者:AS  数据圈成员   python学习组

学生 来自长春

经济统计专业

爱数据爱编程   


国庆


再过几天就是国庆了,还在纠结去哪玩吗?

还在找不到景点吗?没事,这款itchat自动回复小程序统统替你解决,只需输入城市,省份甚至国家,大洲的拼音,就能获取目的地的相关介绍,并自动推荐当地特色景点甚至美食。是不是很有趣啊,赶快和小伙伴们一起来玩吧!

一、Itchat的安装

这里用Anaconda自带的conda工具。打开电脑终端/cmd,输入以下命令。输入cd进入我们想要安装的地方(这里我把itchat安装在E盘),输入以下命令:

pip install itchat


二、前期准备

导入实验所需的库,并扫描二维码并登入网页版微信。


三、实验步骤

当一切都准备就绪之后,我们就来敲代码吧!哈哈,是不是看到“代码”两字就头疼,没事。


我们先来理一下思路:

实验过程大概是这样的:微信发送地点拼音给python,python接收到拼音之后通过地点的拼音从网站:https://lvyou.baidu.com

抓取该地点的相关信息,并返回给微信。所以我们将代码划分为A,B两部分。


a    微信——python

1

Help

通过python先给微信发送一个提示信息,接收对象为文件传输助手

(注意:由于山西与陕西,福州与抚州同音,吉林又分为吉林省和吉林市,所以在打开网页https://lvyou.baidu.com搜索以下几个城市发现,网站将陕西的拼音定义为shaanxi,吉林市为jilinshi,抚州为jiangxifuzhou,为了方便使用,我们在提示信息里做一下备注)

2&3


pinyin+result

当我们输入一个拼音时,我们期待得到的市一个天气结果,所以这实质上是一个pinyin转化为result的过程。

首先注册消息响应事件,然后创建函数getcity(),变量为msg,用来存放pinyin,并通过pinyin获取景点信息result,最后将景点信息发送给好友


b   Python——Web

这部分主要是python通过变量pinyin从网页上抓取相关信息。

 

确定抓取内容

1

打开网页https://lvyou.baidu.com任意搜索几个景点,不难发现景点的网址都是由

https://lvyou.baidu.com+地点的拼音

构成的


2

 确定需要抓取的内容:这里我抓取的内容分为两部分,一部分为景点的基本信息,另一部分为相关推荐。(具体内容请看图中红色框框)

3

右击->审查元素,或者ctrl+shift+I,或者F12打开Chrome Inspector,获取网站页面源代码。然后使用正则表达式和find(),find_all( )函数通过定位标签来查找信息。如下图所示,以厦门为例:


 

代码实现

1

使用def创建函数getTOUR( ),变量为微信输入的内容pinyin,当pinyin为正确形式的地点拼音时,则可以使用urllib解析HTML网页,抓取景点内容之后再用output存放抓取到的内容(由于推荐部分比较难处理,所以一会再来分析)。但是当pinyin为不是地点的拼音时,则就会返回NameError,没事这里使用try……except……语句处理异常,返回值为output

2

 抓取推荐信息:

这里我们想要获取推荐所有推荐内容,观察页面源代码易得,它们都存放在class为‘unmis-li’的标签里面。于是先使用find_all()函数抓取所有推荐,然后再使用if循环语句抓取推荐里面的景点(或美食)名称,并存放在一个列表里面。


写完之后,先尝试着填入地点拼音,运行一下。很快地,问题又出现了。当我们输入的拼音为国家或者省份时候,arr列表居然是空的!先返回旅游网页找找线索

原来,省份(国家)与城市推荐信息的定位标签不一样。如下图所示:

为了保险起见,我们再多搜索几次,发现有些比较偏僻,冷门的地方是没有“最佳季节”,“建议游玩”,景点(美食)等方面的推荐的。这方面我们使用try……except……语句来处理

抓取到我们想要的内容之后,接下来就是定义一个输出变量output来打印抓取结果。output分为output1和output2两部分,直接将景点基本信息存放在output1里,output2用来存放景点(美食)推荐。使用for循环语句将列表里的内容打印出来。



四、总结


五、运行


六、效果展示

有兴趣的小伙伴赶紧来试一下吧

心动不如行动



如何加入数据圈

第一期学习已满,现在二三期正在招募,课程体系任你选,全部免费,终身学习,点击了解  那些人都在爱数圈(第一期)


加入数据君高效数据分析社区,2种加人方式:


1:扫码加入


2、加入方式:


加我微信:seedata      

转账298,先拉微信群,再邀请进小密圈

犹豫的、不懂的、咨询的不要加,加了也是僵尸,时间宝贵,你我都珍惜



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/7rFSaZa5x7
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3549
 
843 次点击