社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

数据挖掘与大数据分析 • 7 年前 • 987 次点击  

作者: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
 
987 次点击