我的日记4月23日晴你三天没回我的消息,在我孜孜不倦地骚扰下你终于舍得回我了,你说‘nmsl’我想这一定是有什么含义吧!噢!我恍然大悟,原来是尼美舒利颗粒。她知道我关节炎,让我吃尼美舒利颗粒,她还是关心我的但是又不想显现的那么热情的。天啊!她好高冷,我好像更喜欢她了呢!你看,虽然女神经常不理我,但是还是会偷偷地关心我,虽然她不直说,但是我都懂。
作为一名无所不能的程序猿,我立刻就想到为什么不用Python爬取情话,然后每天定时发送给她呢?
爬取情话
选取情话资源
分析网页资源
1.定位情话资源
鼠标放在我们要爬取的情话上快速按下右键+检查(元素)。
先在就可以看到我们的情话在页面中是什么位置了。
2.定位标签
在开发者工具中,我们轻松的旧定位到了我们的情话的标签,就是上图红框里的内容。
3.分析请求方式
在刚才的界面(不要退出开发者模式)下刷新:
在Network栏目下找到我们请求的那个资源,在他的Headers中找到这个资源请求的方式,这里是GET。
使用urllib库获取资源
1、安装urllib库
这一步是怕你服务器里没有urllib2库,等会儿会造成麻烦才添加上的,如果你没有添加该库,请百度添加方法。
2、请求资源网站
代码:
......
ììòDé°
1¢·òDà×òaμ£óDà′ìμ×£
2¢°êì¤oì3í′£°êòéúòêàú¤ú¤£°£ò2êàíóé£
3¢×§è3£óèòêàà°é£óμè3£¤òêà°2£
4¢o1êò°D£ò¤±áò±2×óμ£′óóaê£2íá2àD£
5¢òoóà′á£ò2μ¢ó£1áóD±eèμ¢ó£ò2êD£1êòà′μ¢ó°é£
6¢μμòìòí2aù′£óDμêμDì£ê±áò£ò°ò′ó2áaùμ£ùèóDòèüèòDêéμ±íê£
7¢òμéé÷àè¥′o£2òa′à′òaà′£
8¢òììaDì£òì±Dˉ£òaμ£D£óDμDo£
9¢2òùìyéè£μ±òè£òòaàá12×£
......小问号,你是否有很多朋友?其实出现乱码的原因主要网页的编码方式和我们爬取程序的编码方式不一样造成的,只要找到网页的编码方式就好。
3、设置解码类型
有3种方式:
1.从网页Content-Type中获取编码方式
2.第三方库智能识别编码,常用chardet等
3.猜测编码
我们这里其实在请求头的Content-Type里有编码类型,但是为了保险起见,也是为了能应用到更多的资源网站,这里演示以下chardet的用法,猜测编码的使用请自行百度。
chardet获取编码类型
/usr/bin/python3.7/home/baldwin/PycharmProjects/IAmADog/spider/Spider.pyhtml头中的charset:{'encoding':'GB2312','confidence':0.99,'language':'Chinese'}Processfinishedwithexitcode0Get!!!编码方式为GB2312!
设置解码
......
每天一句小情话
1、将你放进我心里最重要的位置,用心来刻你的名字。
2、爱是踏破红尘望穿秋水;爱是一生一世冥冥轮回;爱你,我不问理由。
3、拽你入怀,予你一世相伴,拥你入怀,护你一世平安。
4、何止是野心,我预谋了一辈子的念想,从遇见你开始,不见黄土不死心。
5、我后来想了想,我不耽误你,还会有别人耽误你,那我不甘心,还是我来耽误你吧。
6、见到你的那一刻我就不知所措,有的只是的心跳,是你改变了我,以前我从不会这样的。假如有一个人能让我心甘情愿地改变那就是你。
7、陪我到可可西里去看海不要未来只要你来。
8、每一天都为你心跳,每一刻都被你感动,每一秒都为你担心。有你的感觉真好。
哦吼!搞定!
4、封装代码
刚才我们已经实现了资源的获取,但是这样的代码用起来太不方便了,我们把它封装在方法里:
......importurllib.requestimportchardetdefgetHtml(url):"""获取网页html文本资源:paramurl:网页链接:return:网页文本资源"""html=urllib.request.urlopen(url).readcharset=chardet.detect(html).get("encoding")htmlText=html.decode(charset,errors='ignore')returnhtmlText解析网页资源
解析网页的话,需要第三方插件BeautifulSoup来提取xml和HTML中的数据。
获取content节点内容
我们想要的资源都在一个class为”content“的div节点下,我们现在先获取这个节点的所有内容。
部分代码:
soup=BeautifulSoup(htmlText,"html.parser")"获取content节点的内容"div_node=soup.find('div',class_='content')print(div_node.get_text)结果:
上一步我们已经获取到了我们的主要内容,然后总结可以看出我们想要的文本内容在P节点中,那么现在就来获取它。
soup=BeautifulSoup(htmlText,"html.parser")"获取div节点的内容"div_node=soup.find('div',class_='content')"获取P节点内容"p_node=div_node.find_all('p')forcontentinp_node:print(content.get_text)结果:
注意一下第69剧,这里面有网站的链接,把这个一起发给女神不就露馅了么,现在得想办法给她删掉。同时情话前面的编号也得删掉。
删除特定标签
我们会查看一下数据就会发现,所有的链接都是在U标签里的,那我们可以直接在获取到div标签内容后就把u标签删掉
"删除特定标签u"[s.extract()forsindiv_node('u')]删除序号
我们发现,序号与情话之间是用顿号分割的,那么我们可以将每个P标签下的内容用split分割并且取出第二个元素就好了。
"获取P节点内容"p_node=div_node.find_all('p')forcontentinp_node:"以’、‘分割,并且取出第2个元素"text=content.get_text.split("、",1)[1]print(text)结果:
/usr/bin/python3.7/home/baldwin/PycharmProjects/IAmADog/spider/Spider.py将你放进我心里最重要的位置,用心来刻你的名字。爱是踏破红尘望穿秋水;爱是一生一世冥冥轮回;爱你,我不问理由。拽你入怀,予你一世相伴,拥你入怀,护你一世平安。何止是野心,我预谋了一辈子的念想,从遇见你开始,不见黄土不死心。我后来想了想,我不耽误你,还会有别人耽误你,那我不甘心,还是我来耽误你吧。......Processfinishedwithexitcode0nice啊,到这一步你已经把我们需要的情话都提取出来了!!!
封装数据备用
这样一句一句的也不好处理啊!不如把它放到list里,等下定时任务的时候可以用的时候取出来就好。
sentenceList=list......"获取P节点内容"p_node=div_node.find_all('p')forcontentinp_node:"以’、‘分割,并且取出第2个元素"text=content.get_text.split("、",1)[1]"追加到list尾部"sentenceList.append(text)print(sentenceList):
/usr/bin/python3.7/home/baldwin/PycharmProjects/IAmADog/spider/Spider.py['将你放进我心里最重要的位置,用心来刻你的名字。','爱是踏破红尘望穿秋水;爱是一生一世冥冥轮回;爱你,我不问理由。','拽你入怀,予你一世相伴,拥你入怀,护你一世平安。','何止是野心,我预谋了一辈子的念想,从遇见你开始,不见黄土不死心。',......]Processfinishedwithexitcode05、封装(爬虫代码最终)
爬虫是做好了,但是总觉得乖乖的,我等下还得在其他地方用,不如这里以面向对象的思想把爬虫封装一下。
importurllib.requestfrombs4importBeautifulSoupimportchardetdef__getHtml(url):"""私有方法:获取网页html文本资源:paramurl:网页链接:return:网页文本资源"""html=urllib.request.urlopen(url).readcharset=chardet.detect(html).get("encoding")htmlText=html.decode(charset,errors='ignore')returnhtmlTextdef__sloveHtml(htmlText):"""私有方法:解析HtmlText:paramhtmlText:传入的资源"""sentenceList=listsoup=BeautifulSoup(htmlText,"html.parser")"获取content节点的内容"div_node=soup.find('div',class_='content')"删除特定标签u"[s.extract()forsindiv_node('u')]"获取P节点内容"p_node=div_node.find_all('p')forcontentinp_node:"以’、‘分割,并且取出第2个元素"text=content.get_text.split("、",1)[1]"追加到list尾部"sentenceList.append(text)returnsentenceListdefgetSentenceList(url):"""Spider提供的公用方法,提供情话list:paramurl:获取情话的地址:return:情话list"""return__sloveHtml(__getHtml(url))爬虫总结
这一部分主要用到的类库有:BeautifulSoup,urllib,chardet。
主要思想:封装
手机短信发送发送
1.Twilio
安装
安装过程比较简单,直接pip就好:
sudopip3installtwilio
等待安装完成
SuccessfullybuilttwilioInstallingcollectedpackages:PyJWT,twilioSuccessfullyinstalledPyJWT-1.7.1twilio-6.38.1注册并获取三个重要参数
简单代码实现发送短信实验
fromtwilio.restimportClient#导包account_sid='你的account_sid'auth_token='你的auth_token'client=Client(account_sid,auth_token)message=client.messages.create(from_='+×××××××××',body='亲爱的H,以后我每天都会给你发送一条信息哦!!!',to='你要发送到的手机号(以+86开头)')print(message.sid)控制台输出:
/usr/bin/python3.7/home/baldwin/PycharmProjects/IAmADog/qqsend/Send.pySMfe64f40f2ac24b8ca82121d57147312cProcessfinishedwithexitcode0手机接收短信:
OK!到这里我们已经简单实现了发送短信的功能,现在要去把这个功能封装一下。
实现发送短信的功能
封装代码:
fromtwilio.restimportClient#导包defsendSMSMsg(content,tel):"""向某个手机号发送短信内容:paramcontent:短信内容:paramtel:手机号"""account_sid='你的account_sid'auth_token='你的auth_token'client=Client(account_sid,auth_token)client.messages.create(from_='+18634171608',body=content,to=tel)print('Send:',content,'totel:',tel,'syccessfully!!!')if__name__=='__main__':sendSMSMsg("Hello","+×××××××××")测试结果:
/usr/bin/python3.7/home/baldwin/PycharmProjects/IAmADog/qqsend/Send.pySend:Hellototel:+8618436354553syccessfully!!!Processfinishedwithexitcode0手机接收短信:
发送短信总结
操作还算是比较简单的,这部分主要用到twilio库。
定时发送短信
Python定时任务
代码实现
/usr/bin/python3.7/home/baldwin/PycharmProjects/IAmADog/DoWork.py定时任务执行一次Traceback(mostrecentcalllast):File"/home/baldwin/PycharmProjects/IAmADog/DoWork.py",line7,in
下面的异常是因为我手动退出了程序,这里不用管他。
具体实现发送情话
我们这里整理一下具体需求:
2.每次发送的时候从list中取出一个句子,下一次取出下一条,不能重复
3.list中的句子发送完毕之后要发短信通知我
取句子
思路:设置一个全局变量index,代表着下一条要发送的句子的下标,每次发送短信后,下标要增加1
发送完毕通知管理员
思路:每次进入任务但是发送短信之前都要比较index的值与list的长度(现在想起来,设计程序的时候用栈来储存数据会更好),如果index已经越界,直接给管理员发短信通知。
实现
短信发送测试
管理员通知测试
同样的在debug模式下,设置index的值为len(sentenceList),程序进入通知管理员模块中,这里不再演示。
封装
这部分主要用到的模块:time,然后记得要把前两个我们自己做的模块导入进来。
总结
最后只要运行我们最后一个模块中主程序入口就好了,你也可以按照自己需求修改配置达到不同的效果。
我现在就去告诉女神去。
嘿嘿!女神秒回的,开心!
原文链接:
今日福利
遇见大咖
由CSDN全新专为技术人打造的高端对话栏目《大咖来了》来啦!
CSDN创始人&董事长、极客帮创投创始合伙人蒋涛携手京东集团技术副总裁、IEEEFellow、京东人工智能研究院常务副院长、深度学习及语音和语言实验室负责人何晓冬,来也科技CTO胡一川,共话中国AI应用元年来了,开发者及企业的路径及发展方向!
澳门是一个美丽的地方,宛若花园城市。
澳门的美丽使它成为一个旅游胜地。
特别是澳门开埠四百余年来,中西文化交汇互相渗透,形成了颇具特色的市井风情,丰富了澳门的自然和人文旅游资源。
澳门有居民45万人,但每年到澳门来的游客竟有800多万人。
澳门优美的自然景色和独特的人文景观吸引着不同肤色、不同面孔的人。
澳门半岛狭小,地势跌宕。
东望洋山、西望洋山、柿山、莲峰山、螺丝山、青洲山等,风貌各异,成了澳门名胜风景点。
柿山曾被澳葡辟为炮台,于1616年改建而成,筑有坚实石墙,仿如欧洲古堡,气势雄伟,现多门古炮仍在,登临眺望,可俯览全澳风光。
澳门的建筑,东西参混,千姿百态,有中式的古宅大院,也有西式洋楼;有明、清的古庙,也有欧陆式的古雅教堂。
现如今又增加了不少气宇轩昂的现代高楼大厦,古今中外之房屋建筑,无不具备,别具情调。
作为离岛的凼仔、路环两岛,过去发展较为缓慢,但随着澳凼大桥、友谊大桥和路凼连贯公路的建成,两个离岛近年也热闹起来。
尤其是凼仔岛,新楼矗立,不仅有国际机场、更有大学、酒店、赛马场及各色住宅等。
路环岛山野清幽,田畴村舍分布各处,具田园风光和郊区野趣。
近年来,有关方面在凼仔、路环山野开辟了步行径,沿径而行,既可锻炼身体,又可欣赏路凼风光,令人心旷神怡,是澳门居民和游客郊游的好方式、好去处。
澳门风景优美,环境幽静,旅游资源丰富,可供居民和游客游览、休闲之地众多。
1992年,澳门8个社团联合发起评选,从澳门43个旅游景点中选出了名为“镜海长虹”、“妈阁紫烟”、“三巴圣迹”、“普济寻幽”、“灯塔松涛”、“庐园探胜”、“龙环葡韵”、“黑沙踏浪”的“澳门八景”,广为推介,以推广旅游事业,吸引更多的游客。
澳凼大桥该桥落成于1974年10月,连引桥全长3400米横跨澳门半岛和凼仔岛之间的海面,桥的设计独特,线条流畅,引桥平直主桥部分有较大弧度,犹如长虹卧波,给古老的澳门平添现代气息和磅礴气势。
入夜后,桥灯亮起,如连串珍珠,璀璨夺目,无论春夏秋冬,澳凼大桥都以它宏伟的身姿,成为澳门的一道靓丽的风景线,成为澳门快速发展的标志。
澳凼大桥为“澳门八景”之一。
1994年4月,澳凼之间又建起第二座跨海大桥“友谊大桥”,该桥连引桥全长4414米,为波浪形斜拉钢索大桥,雄伟中更见柔美流畅。
澳门的公园不但数量很多,而且各具特色,成为澳门这个大花园里的“园中之园”。
澳门的公园主要有:白鸽巢公园、卢廉若公园、二龙喉公园、石排湾郊野公园、黑沙公园、南湾公园、澳门海洋公园、竹湾公园等。
白鸽巢公园又称贾梅士公园,以纪念400多年前来澳的葡萄牙诗人贾梅士。
贾梅士曾在园中石洞隐居并完成了葡国著名史诗《葡国魂》。
关于赞美三都澳的句子
1、去三都澳的路上,窗外的风景实在是美不胜收,山连着山,细雨飘飘,烟雾缭绕,云在半山腰游动,树木庄稼郁郁葱葱,没有秋的感觉,完全是春的气息,用春意盎然再确切不过了。这种美,不是简单的具象的美,更有一种抽象的美,非得你身临其境地去感受不可。
2、三都澳历史悠久、弛名海外,是闽东沿海的“出入门户,五邑咽喉”。三都澳的风景更是闻名遐迩、举世无双,让人流连忘返。三都澳的美,不比泰山的雄伟壮丽,不比西湖的雕琢粉饰,而是一种自然的美、朴素的美。
3、三都澳这美景,是无声的;这美景,是阔大的;这美景,是沁人心脾的,是浸染人心的。我的元神已经与这大自然的美景融为一体了;我的元神已经遨游于这大自然中。
4、初到三都澳,给我的第一印象就是“浩瀚”。看,那一望无际的海面在阳光的照射下,显得波光粼粼,起伏的微波,犹如一缕缕湛蓝的绸带随风飘拂。在那714平方公里的海域内,大大小小的岛屿、礁石星罗棋布,
5、三都澳最引人注目的是螺壳岩。这块礁石形似螺壳。“螺壳”内被奔腾不息的微波冲刷着,长年累月的就露出一个庞大的窟窿,造就了这块形象逼真的螺壳岩。历经数百年,任凭风吹雨打依然如故,堪称三都澳一大奇观。
6、走进三都澳,云在山中绕,天与山相接,树叶上甘露,欲滴而未滴,空旷而宁静,淡雅而悠闲。此景,怎能不与云为伴?此情,还管它世间喧嚣?此情此景,怎能不吟诗赋词?我要在雨中前行,与云为伴,与花私语……
7、我们到了海边,我迫不及待地蹦下车。我们坐上了一艘快艇,快艇飞驰在辽阔的大海,只见海面上白浪翻滚,浪花一朵接着一朵,像许多调皮的小朋友在水里嬉戏。向远处望去,隐约看见几艘大船在航行,还有一些海鸥在天空中飞翔。
9、我站在窗着,置身三都澳,近看三都澳,远眺三都澳,领略三都澳的美景。我为三都澳的美倾倒!我惊诧于三都澳的美!
10、我惊诧于三都澳的美。那天晴空万里,碧波荡漾,海是蓝的,天也是蓝的,水天相接,仿佛另一个世界似的。今天雨刚停,海面上还有雾气,所有的船只都已经靠岸,海岛若隐若现,有一种朦胧美。
11、三都澳的美是抽象的。没有置身其中,你无法感受三都澳的美,不是文人墨客能轻易描写出来的,那是一般风景区具象的美而已。你非得身临其境去感受不可,只有你亲身走进三都澳,你才知道三都澳的美究竟美在哪里。
12、三都澳的美是历史的。三都澳是天然深水良港,十九世纪末,英、美、法、德等十几个国家在这里有领事馆、办事处或公司,“美孚石油”就是从这里进出。以至于许多欧美民众,知三都澳,而不知福建,甚至不知中国。
13、走进三都澳,历史的气息穿越时空隧道向你流淌而来,文化的蕴含如品饮美酒令你进入充满激情、浪漫、温馨的时空。历史的美、文化的美,是无以言表的。
14、三都澳的美在于岛。岛是错叠有致的,远山远景散布于苍茫之际,交错连绵,横亘于海天之间,低矮如练,在水面上飘荡着,加上海的波涛,岛好象在不停的移动交流,隐隐约约中有一种会说话的动感。
15、三都澳岛与岛空间的阔度正好是你视觉最舒适的范围。如果不是神来之笔,一定是大自然赐予我们的造化。