原创不易,转载前请注明博主的链接地址:Blessy_Zhu https://blog.csdn.net/weixin_42555080
本次代码的环境:
运行平台: Windows
Python版本: Python3.x
IDE: PyCharm

一、 前言

你的朋友圈中一定会有那么一些人,让你一直念念不忘:亦或是“你本无意穿堂风,偏偏孤倨引山洪。我是垂眉摆渡翁,却独独偏爱侬”的那个TA;亦或是“衣上辛勤慈母线,箧中珍重故人书。白云红树堪移棹,万壑千峰拟结庐”的母亲;亦或是“落日斜,秋风冷。今夜故人来不来,教人立尽梧桐影”的挚友。俗话说,远亲不如近邻。
对朋友很久没联系
不是因为感情变了
而是因为生活变了
毕竟年龄增长了
肩负的责任重了
身边的牵挂多了……
何不如,写一个程序,每天都给TA发送,TA喜欢的、或者是你想对TA说的话。今天,就利用Python中的wxpy模块,将你想说的话发给TA吧!!!!!!!!!!!!!!!!
 


二、思路过程

首先,选择一个自己想要发信息的对象——我这里选择的是我的弟弟(微信备注名:老弟),我想要给他发的信息是每天郑州的天气,以及每天分享一个小故事。
对于郑州的天气,可以通过网站中国天气【网址:http://www.weather.com.cn/ 】 来访问。

输入郑州,切换到郑州的天气预报,并且拼接完成即可。
 



这是一个静态网页,就不在具体介绍它的爬取过程了。
接下来,要爬取的是小故事,可以通过网站儿童资源网,【网址:http://www.tom61.com/ertongwenxue/shuiqiangushi/index.html 】来爬取小故事信息。

随便点开一个,如《幸福王国》,可以看到,这个也是静态网页。具体的分析过程也不再赘述了。
 



接下里就是找到发送好友并且发送信息,可以通过Python中的wxpy模块,来实现:
from wxpy import *
bot = Bot()  # 登陆网页微信,并保存登陆状态
def sendmsg(content):# 搜索自己的好友,注意中文字符前需要+umy_group = bot.friends().search(u'***')[0]my_group.send(content)  # 发送MSG

三、代码实现与结果展示

首先给出爬取小故事的代码:

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import os
import timedef getHTMLText(url,headers):try:r=requests.get(url,headers=headers,timeout=30)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:return "爬取失败"def parsehtml(namelist,urllist,html):url='http://www.tom61.com/'soup=BeautifulSoup(html,'html.parser')t=soup.find('dl',attrs={'class':'txt_box'})i=t.find_all('a')for link in i:urllist.append(url+link.get('href'))namelist.append(link.get('title'))print(urllist)print(namelist)return urllist,namelistdef main():headers = {'User-Agent':'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',}urllist=[]#定义存放故事URL的列表namelist=[]#定义存放故事名字的列表if not os.path.exists('myshortStories'):#将所有的故事放到一个目录下os.mkdir('myshortStories')for i in range(1,20):#控制分页(每页有70个故事)if i==1:#爬取故事的地址和故事名url='http://www.tom61.com/ertongwenxue/shuiqiangushi/index.html'else:url='http://www.tom61.com/ertongwenxue/shuiqiangushi/index_'+str(i)+'.html'print ("正在爬取第%s页的故事链接:" % (i))print (url+'\n')html=getHTMLText(url,headers)urls,storiesNames = parsehtml(namelist,urllist,html)littleStories = []m=0for url in urls:#通过URL在爬取具体的故事内容print('已经爬取了'+str(((i-1)*70+m))+'篇文章')littlestory = ''storyhtml = getHTMLText(url,headers)soup = BeautifulSoup(storyhtml, 'html.parser')t = soup.find('div', class_='t_news_txt')ptexts = t.find_all('p')for ptext in ptexts: #将一个故事作为数列的一个元素storytext = ptext.textlittlestory = littlestory+storytextlittleStories.append(littlestory.replace('\u3000\u3000',''))m=m+1time.sleep(1)myLittleStorySets = dict(zip(storiesNames,littleStories))#将故事名和故事内容拼接成字典的形式print("爬取链接完成")k=0for storyName, storyContent in myLittleStorySets.items():textName = 'myshortStories/'+'Day'+str(((i-1)*70+k))+'.txt'#为每个故事建立一个TXT文件with open(textName, 'a', encoding='utf-8') as f:f.write(storyName)f.write('\n')f.write(storyContent)k = k + 1print("正在写入Day"+str(((i-1)*70+k))+"故事")time.sleep(1)if __name__=='__main__':main()

结果如下所示:

随便打开一个爬取好的文章,进行展示:
 



然后是获取天气信息:
def getZZWeatherAndSendMsg():# 要改为自己想要获取的城市的url,下面是郑州的urlresp = urlopen('http://www.weather.com.cn/weather1d/10118010105A.shtml')soup = BeautifulSoup(resp, 'html.parser')# 获取温度数据tem = soup.find('p', class_="tem").find('span').string# 第一个包含class="tem"的p标签即为存放今天天气数据的标签# 获取天气状况weather = soup.find('p', class_="wea").string# 获取风力情况win = soup.find('p', class_="win").find('span').string# 获取日出时间sun = soup.find('p', class_="sun sunUp").find('span').string# 拼接要发送的消息格式contents = '郑州今日:' + '\n' + '天气:' + weather + '\n' + '温度:' + tem + '℃' + '\n' + '风力:' + win + '\n' + sun + '\n' + '注意天气变化!!'

然后拼装信息,发送给指定的人:

    for i in range(100):fileName = './myshortStories/'+'Day'+str(i)+'.txt'storyContent = open(fileName,encoding='utf-8').read()sentContents = weatherContent+ '\n\n'+'每天给你讲一个小故事,今天的是:'+ '\n\n'+storyContentsendblogmsg(sentContents)# 设置每天发送一次v#t = Timer(24*60*60,job)#t.start()time.sleep(24 * 60 * 60)

最终结果为:

四、总结

这篇文章主要内容是爬取两个静态网站,分别是《儿童资源网》和《中国天气网》,然后将爬到的数据,截取发送给指定的人。这篇文章就到这里了,欢迎大佬们多批评指正,也欢迎大家积极评论多多交流。
 


附完整代码:

# -*- coding: utf-8 -*-
import requests
import os
import time
from urllib.request import urlopen
from bs4 import BeautifulSoup
from wxpy import *bot = Bot()  # 登陆网页微信,并保存登陆状态
def sendblogmsg(content):# 搜索自己的好友,注意中文字符前需要+umy_group = bot.friends().search(u'**你要发送的对象微信备注名**')[0]my_group.send(content)  # 发送天气预报def getHTMLText(url,headers):try:r=requests.get(url,headers=headers,timeout=30)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:return "爬取失败"def parsehtml(namelist,urllist,html):url='http://www.tom61.com/'soup=BeautifulSoup(html,'html.parser')t=soup.find('dl',attrs={'class':'txt_box'})i=t.find_all('a')for link in i:urllist.append(url+link.get('href'))namelist.append(link.get('title'))print(urllist)print(namelist)return urllist,namelistdef mylittlestory():headers = {'User-Agent':'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',}urllist=[]#定义存放故事URL的列表namelist=[]#定义存放故事名字的列表if not os.path.exists('myshortStories'):#将所有的故事放到一个目录下os.mkdir('myshortStories')for i in range(1,2):if i==1:#爬取故事的地址和故事名url='http://www.tom61.com/ertongwenxue/shuiqiangushi/index.html'else:url='http://www.tom61.com/ertongwenxue/shuiqiangushi/index_'+str(i)+'.html'print ("正在爬取第%s页的故事链接:" % (i))print (url+'\n')html=getHTMLText(url,headers)urls,storiesNames = parsehtml(namelist,urllist,html)littleStories = []m=0for url in urls:#通过URL在爬取具体的故事内容print('已经爬取了'+str(((i-1)*70+m))+'篇文章')littlestory = ''storyhtml = getHTMLText(url,headers)soup = BeautifulSoup(storyhtml, 'html.parser')t = soup.find('div', class_='t_news_txt')ptexts = t.find_all('p')for ptext in ptexts: #将一个故事作为数列的一个元素storytext = ptext.textlittlestory = littlestory+storytextlittleStories.append(littlestory.replace('\u3000\u3000',''))m=m+1time.sleep(1)myLittleStorySets = dict(zip(storiesNames,littleStories))#将故事名和故事内容拼接成字典的形式print("爬取链接完成")k=0for storyName, storyContent in myLittleStorySets.items():textName = 'myshortStories/'+'Day'+str(((i-1)*70+k))+'.txt'#为每个故事建立一个TXT文件with open(textName, 'a', encoding='utf-8') as f:f.write(storyName)f.write('\n')f.write(storyContent)k = k + 1print("正在写入Day"+str(((i-1)*70+k))+"故事")time.sleep(1)def getZZWeatherAndSendMsg():# 要改为自己想要获取的城市的url,下面是青岛的urlresp = urlopen('http://www.weather.com.cn/weather1d/10118010105A.shtml')soup = BeautifulSoup(resp, 'html.parser')# 获取温度数据tem = soup.find('p', class_="tem").find('span').string# 第一个包含class="tem"的p标签即为存放今天天气数据的标签# 获取天气状况weather = soup.find('p', class_="wea").string# 获取风力情况win = soup.find('p', class_="win").find('span').string# 获取日出时间sun = soup.find('p', class_="sun sunUp").find('span').string# 拼接要发送的消息格式weatherContent = '郑州今日:' + '\n' + '天气:' + weather + '\n' + '温度:' + tem + '℃' + '\n' + '风力:' + win + '\n' + sun + '\n' + '注意天气变化!!'i=0for i in range(100):fileName = './myshortStories/'+'Day'+str(i)+'.txt'storyContent = open(fileName,encoding='utf-8').read()sentContents = weatherContent+ '\n\n'+'每天给你讲一个小故事,今天的是:'+ '\n\n'+storyContentsendblogmsg(sentContents)# 设置每天发送一次v#t = Timer(24*60*60,job)#t.start()time.sleep(24 * 60 * 60)if __name__=='__main__':mylittlestory()getZZWeatherAndSendMsg()

Python爬虫之定时给TA发送微信消息(十七)相关推荐

  1. 全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)...

    不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强迫症了,这是也许程序 ...

  2. 用python实现自动化办公------定时发送微信消息

    python自动化办公------定时发送微信消息 身边的一位朋友的真实事迹分享给大家,就暂称他C吧.C是一个英俊潇洒的健身男,经常沾花惹草,桃花运不断,听C说他的微信好友就有5000+,平时回消息都 ...

  3. python 发送微信语音消息_全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)...

    不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强迫症了,这是也许程序 ...

  4. python自动发送微信-Python自动定时发送微信消息

    如今微信已成为我们日常生活的主要交流工具,利用itchat库,我们可以发送微信消息,如果需要定时自动发送,则需要借助apscheduler库,关于apscheduler库,前一篇转载文章有专门的介绍. ...

  5. Python自动定时发送微信消息

    如今微信已成为我们日常生活的主要交流工具,利用itchat库,我们可以发送微信消息,如果需要定时自动发送,则需要借助apscheduler库,关于apscheduler库,前一篇转载文章有专门的介绍. ...

  6. python爬虫如何实现每天爬取微信公众号的推送文章

    python爬虫如何实现每天爬取微信公众号的推送文章 上上篇文章爬虫如何爬取微信公众号文章 上篇文章python爬虫如何爬取微信公众号文章(二) 上面的文章分别介绍了如何批量获取公众号的历史文章url ...

  7. Python爬虫之定时抢购淘宝商品

    Python爬虫之定时抢购淘宝商品 import time from selenium import webdriver import datetimeclass Spider:def __init_ ...

  8. Python发送微信消息(文字、图片、文件)给指定好友和微信群,零基础可看懂(附源码和教程)

    前言 本示例是调用Windows API模拟发送,用Python调用win32api这个库来调用Windows API模拟人的手动操作来发送消息. 在使用前,请将你微信的窗口设置为在最前面,这样就便于 ...

  9. 利用Python发送微信消息的方法

    微信是支持用快捷键打开主界面的,这个可以在微信的设置里看到,如下图所示 我们就可以利用这一特性,用Python模拟按快捷键的操作,用来打开微信主界面. 打开主界面之后,使用Ctrl+F,定位到微信的搜 ...

最新文章

  1. 集成Java内容仓库和Spring
  2. PHP全栈开发(八):CSS Ⅸ dispaly visibility
  3. ubuntu下面搭建SolrCloud集群
  4. mysql 端口time_wait_TIME_WAIT状态全是3306解决办法
  5. DataSet 去除重复的行
  6. sdut 3361迷宫探索dfs
  7. axure怎么转换成php,墨刀和axure的区别是什么?
  8. 简单的web框架(python)
  9. MySQL 中 count(*) 和 count(1) 有什么区别?哪个性能最好?
  10. 企业安全管理的内外合规之ISO27001标准详解
  11. 草图大师2021安装教程(超详细图文教程)
  12. 一文读懂什么是聚合支付
  13. 通过doi可以检索到文献_什么是DOI?如何获取文献的DOI?
  14. 好程序员大数据培训之Hadoop常见问题
  15. Photoshop脚本 镜头光晕滤镜的使用
  16. 如何查询电脑系统和服务器地址,如何查询电脑系统和服务器地址
  17. matlab最基础教程(四):常用的系统自带函数,符号变量与字符串篇
  18. 管理员才可以运行的:chkdsk:磁盘管理 sfc /scannow检测系统文件
  19. 边带娃边赚钱,昨日共计165.52
  20. 陶敏修《高阶Perl》访谈录(来自The Perl Review)

热门文章

  1. 云计算课程笔记10089
  2. 和平精英怎么改到120帧?进来看看你也可以!
  3. 蒋涛:区块链技术将推动生产力与生产关系的革新
  4. 安装海龟绘图类库(turtle)
  5. 磐石云服务器_磐石云双十二高防ip、海外服务器限量1元秒杀
  6. 北京大学计算机学院陈鹏进,计算机科学技术系本科生在SIGCOMM 2020上发表高性能可见光反射互联技术论文...
  7. reack Hooks
  8. ERP中的MPS与APS间的关系
  9. matlab feedforward,premnmx(mapminmax) newff (feedforwardnet) tramnmx 如何使用
  10. Stephen Wolfram