今天的古巴任务解析跟我们平时学的代码相比那是非常的长啊。重点是序列化与反序列化,还用上了字典和urllib的一些其他用法。
python大大的图
一开始我按这个代码敲,和群里战友们一样运行不出来,后来看了陈容喜同学的简书才发现最后一行是print,我们连print都没有敲,怎么会打印,下图是大大又运行一遍之后的代码,注意第26行。
如果只敲了25行结果一定是这样的
我的图
这个程序是说先读取那个rss文件,逐条抽取url,访问url内容。然后按(url =› 内容)方式存放到字典里。序列化字典到文件。然后再反序列化那文件,就可以按某个url来提取,或是全部按列表提出了。序列化就是那个梗。由于urllib的效率没有urllib2好,在遍历链接列表的时候,大大使用了urllib2.
第八行,首先我们抓取了外部的网址"http://feeds.bbci.co.uk/news/scotland/rss.xml"把它下载到本地文件"/tmp/news.html"中。 第九行定义了一个空的urls。get_page()用于获取网址url的内容。第十一到十四行是说,urllib2用一个Request对象来映射你提出的HTTP请求,在它最简单的使用形式中你将用你要请求的地址创建一个Request对象,通过调用urlopen并传入Request对象,将返回一个相关请求response对象,这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。其实也就是读取rss文件。 十五行是定义字典,十六行是以只读方式打开本地文件。re.split()可以将字符串匹配正则表达式的部分分割开并返回一个列表。十七行是把经过一定处理的网页保存到urls里。第十八到二十一行是说,对于urls里的网页,如果有符合http协议的,那么就用downs[url]=get_page(url)这种url=>内容方式保存到字典里。由于只是举一个例子,保存了一个网页的内容以后就可以跳出循环了。二十二到二十三行说的是序列化,我们把字典里保存的网页内容写入文件。二十四二十五行说的是反序列化,我们把刚刚写入文件的内容读出来。最后通过二十六行打印出我们获取的网页内容。
大大在例子里选取了一种很特殊的rss网页,这样就可以得到很多网页列表。原来并不是随便一个网页都可以做出这样的结果啊
昨天没有发文章,我的过。楚乔传太好看了,看的忘记了写文章的时间,结果晚上写一半睡着了(-_-) zzz今天要先写文章再玩儿~