我的日记 4月23日 晴
你三天没回我的消息,在我孜孜不倦地骚扰下你终于舍得回我了,你说‘nmsl’我想这一定是有什么含义吧!噢!我恍然大悟,原来是尼美舒利颗粒。
她知道我关节炎,让我吃尼美舒利颗粒,她还是关心我的但是又不想显现的那么热情的。
天啊!她好高冷,我好像更喜欢她了呢!
你看,虽然女神经常不理我,但是还是会偷偷地关心我,虽然她不直说,但是我都懂。
唯一的问题就是,我最近很忙,忙到都没有时间去给女神发“早安”了。不可以!“早安”绝对不能断,这是我对女神诚挚的爱,女神虽然不会回复我,但是她肯定都记在心里,不回复我肯定是在考验我!
作为一名无所不能的程序猿,我立刻就想到为什么不用Python爬取情话,然后每天定时发送给她呢?
爬取情话
选取情话资源
首先我们需要去网上找到合适的情话资源
分析网页资源
1. 定位情话资源
鼠标放在我们要爬取的情话上快速按下右键+检查(元素)。
先在就可以看到我们的情话在页面中是什么位置了。
2. 定位标签
在开发者工具中,我们轻松的旧定位到了我们的情话的标签,就是上图红框里的内容。
3. 分析请求方式
在刚才的界面(不要退出开发者模式)下刷新:
在Network栏目下找到我们请求的那个资源,在他的Headers中找到这个资源请求的方式,这里是GET。
使用urllib库获取资源
1、安装urllib库
这一步是怕你服务器里没有urllib2库,等会儿会造成麻烦才添加上的,如果你没有添加该库,请百度添加方法。
2、请求资源网站
代码:
import urllib.request
url = "http://www.1juzi.com/new/150542.html"
html = urllib.request.urlopen(url).read()
print(html)
结果:
......
<h1>ÿÌìÒ»¾äСÇé»°</h1>
<div class="content"><div class="news"><script type="text/javascript">news1();</script></div>
<p>1¡¢½«Äã·Å½øÎÒÐÄÀï×îÖØÒªµÄλÖã¬ÓÃÐÄÀ´¿ÌÄãµÄÃû×Ö¡£</p>
<p>2¡¢°®ÊÇ̤Æƺ쳾Íû´©ÇïË®£»°®ÊÇÒ»ÉúÒ»ÊÀÚ¤Ú¤Âֻأ»°®Ä㣬ÎÒ²»ÎÊÀíÓÉ¡£</p>
<p>3¡¢×§ÄãÈ뻳£¬ÓèÄãÒ»ÊÀÏà°é£¬ÓµÄãÈ뻳£¬»¤ÄãÒ»ÊÀƽ°²¡£</p>
<p>4¡¢ºÎÖ¹ÊÇÒ°ÐÄ£¬ÎÒԤıÁËÒ»±²×ÓµÄÄîÏ룬´ÓÓö¼ûÄ㿪ʼ£¬²»¼û»ÆÍÁ²»ËÀÐÄ¡£</p>
<p>5¡¢ÎÒºóÀ´ÏëÁËÏ룬ÎÒ²»µ¢ÎóÄ㣬»¹»áÓбðÈ˵¢ÎóÄ㣬ÄÇÎÒ²»¸ÊÐÄ£¬»¹ÊÇÎÒÀ´µ¢ÎóÄã°É¡£</p>
<p>6¡¢¼ûµ½ÄãµÄÄÇÒ»¿ÌÎҾͲ»ÖªËù´ë£¬ÓеÄÖ»ÊǵÄÐÄÌø£¬ÊÇÄã¸Ä±äÁËÎÒ£¬ÒÔÇ°ÎÒ´Ó²»»áÕâÑùµÄ¡£¼ÙÈçÓÐÒ»¸öÈËÄÜÈÃÎÒÐĸÊÇéÔ¸µØ¸Ä±äÄǾÍÊÇÄã¡£</p>
<p>7¡¢ÅãÎÒµ½¿É¿ÉÎ÷ÀïÈ¥¿´º£²»ÒªÎ´À´Ö»ÒªÄãÀ´¡£</p>
<p>8¡¢Ã¿Ò»Ì춼ΪÄãÐÄÌø£¬Ã¿Ò»¿Ì¶¼±»Äã¸Ð¶¯£¬Ã¿Ò»Ã붼ΪÄãµ£ÐÄ¡£ÓÐÄãµÄ¸Ð¾õÕæºÃ¡£</p>
<p>9¡¢²»¸ÒÔÙÌýÇé¸è£¬µ±ÎÒ¸öÈË£¬ÒòΪÑÛÀáÖ¹²»×¡¡£</p>
......
小问号,你是否有很多朋友?
我们爬下来的都是乱码,发给女神一堆乱码,女神可能还会以为是我们给她发的暗语,说不定还要花时间去寻找解密方法,想想都累,不能这个样子!
其实出现乱码的原因主要网页的编码方式和我们爬取程序的编码方式不一样造成的,只要找到网页的编码方式就好。
3、设置解码类型
有3种方式:
1.从网页Content-Type中获取编码方式
2.第三方库智能识别编码,常用chardet等
3.猜测编码
我们这里其实在请求头的Content-Type里有编码类型,但是为了保险起见,也是为了能应用到更多的资源网站,这里演示以下chardet的用法,猜测编码的使用请自行百度。
chardet获取编码类型
代码:
import urllib.request
import chardet
url = "http://www.1juzi.com/new/150542.html"
html = urllib.request.urlopen(url).read()
print("html头中的charset:", chardet.detect(html))
结果:
/usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/spider/Spider.py
html头中的charset:{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
Process finished with exit code 0
Get!!!编码方式为GB2312!
设置解码
代码:
import urllib.request
import chardet
url = "http://www.1juzi.com/new/150542.html"
html = urllib.request.ur