1.前言

        刚学爬虫想写个最简单的小程序体会一下爬虫的效果,原理代码非常简单,仅供大家学习~


2.前期准备

    (1).itchat

           
itchat是一个非常方便简单的python的微信接口,可以傻瓜一样的登陆微信,发送消息发送图片等,这里我只用到了最简单的登陆登出和send方法。






        auto_login可以让用户执行登陆,执行后效果就是展示一个二维码让你去扫,我发现每次运行一遍都要扫一遍很麻烦,查资料发现写一个hotReload=True即可无需再次扫码很方便。
auto_login(hotReload=True)
登陆成功会有如下显示






            登出操作很简单,不多说了,习惯性的加上   
logout()            重点来了send函数的使用send(msg=message,toUserName = userName)
msg为想发送的信息,userName为用户的一个编号,注意这个不是所谓的微信号或者昵称,开始用微信号当userName发现不对,解决方法如下users =
ic.search_friends(name = 'yl') userName = users[0]['UserName']
先search一下,这时候的name就写你给他的备注就好,然后再读一下他的UserName就好了,有兴趣的可以print一下,是一大长串十六进制数

         要注意的是,send函数返回一个值,如果send成功即返回True,失败即返回False。可以用它来检测一下是否发送成功。








千万不要尝试把send放进for循环!!我想呼死我室友的时候,发了一百多条就被微信封了几个小时不能发消息!!!血的教训。。。

(2).爬虫


        只学了一天爬虫,所以还不是很懂,以后会写几篇详细的关于爬虫的东西,今天只说说最简单的应用


   http://tianqi.sogou.com/changchun/想爬这个网站的天气,右键查看原码发现写的很简单啊。。。所以就成功爬了它。说一下方法:


(1).先安装 urllib和BeautifulSoup

(2).urlopen
html=urllib.request.urlopen("http://tianqi.sogou.com/changchun/")
用这个函数来打开网页↑,把它当做对象,这样就可以对他进行一系列操作了

(3).提取信息

我发现有关天气温度和日期的信息都属于p标签,并且class都是p1,那就很方便了,调用这个函数
bs0bj = BeautifulSoup(html) nameList = bs0bj.findAll("p",{"class":"p1"})
以字典形式写的。这样把class为P1,并且都是P类标签的全部放进了nameList数组里,打印一下他吧,打印成功就证明已经爬成功啦




爬虫这一块今天看了几个入门函数,就想小试牛刀一下,爬起来很顺利,更详细的会再写几篇blog学习

(3).附上源代码

        两个文件,第一个写爬虫,第二个写微信发送消息


        主函数:

from urllib.request import urlopen from bs4 import BeautifulSoup def
getMessage(): html=urlopen("http://tianqi.sogou.com/changchun/") bs0bj =
BeautifulSoup(html) nameList = bs0bj.findAll("p",{"class":"p1"}) count = 0
weather=[] for name in nameList: count+=1 weather.append(name.get_text())
if(count==3): break return weather if __name__ == "__main__": weather =
getMessage() print(weather)


import itchat as ic import time from Getmessage import getMessage from getTime
import startPro count = 0 try: weatherInformation=getMessage() Date =
weatherInformation[0] weather = weatherInformation[1] temper =
weatherInformation[2] message=Date+"\n"+weather+"\n"+temper+"\n" print(message)
except:#抛出异常 message = "" print("Get message failed")
ic.auto_login(hotReload=True) users = ic.search_friends(name = 'yl') userName =
users[0]['UserName'] ret = ic.send(msg=message,toUserName = userName) if ret:
print("Succeed Sending") else: print("Error sending") time.sleep(60) ic.logout()
(4).定时

        定时发送,不需要多说了,入门级别的语句,直接贴代码吧,又写在另一个文件了
import time def startPro(): while(1): currentHour = int(time.strftime("%H"))
print(currentHour) if currentHour==7: print("It's time") break if currentHour
== 6: print("itstimerightnow") time.sleep(60) else: print("It's not time
,sleep........") time.sleep(3500) if __name__ == "__main__": startPro()

(5).结语

   
这个程序可以改动的东西太多了,代码也不是很精炼完善,而且可以爬一下建议的着装,是否带伞,是否适宜出行这一类信息,然后我会把它放进树莓派中,每天就可以进行推送啦(PC也可以的)……过一阵更新一下

        祝大家早日脱单