刚开始学习Python,决定学习Python3,但是网上的好多书都是Python2编写的。从今天起开始收集Python3.X实现的有趣代码,在解读代码的过程中提高自己的Python。
在CSDN上找到了一个利用Python3.3实现的爬虫,作者是一个名为德玛之力的网友,这是原文地址:
http://blog.csdn.net/omuyejingfeng1/article/details/24182313
运行了代码,顺利的实现了百度贴吧页码的下载,源码如下:
#encoding:utf-8 import urllib.request as request #导入urllib模块 import urllib.parse as parse import string print(""" +++++++++++++++++++++++ 学校:超神学院 专业:德玛班 姓名:德玛之力 version: python3.2 +++++++++++++++++=++++ """) def baidu_tieba(url, begin_page, end_page): for i in range(begin_page, end_page + 1): sName = 'f:/test/'+str(i).zfill(5)+'.html' print('正在下载第'+str(i)+'个页面, 并保存为'+sName) m = request.urlopen(url+str(i)).read() with open(sName,'wb') as file: file.write(m) file.close() if __name__ == "__main__": url = "http://tieba.baidu.com/p/" begin_page = 1 end_page = 3 baidu_tieba(url, begin_page, end_page)
Python将原来模块urllib2拆分成了urllib.request和urllib.error。在这里导入的urllib.parse和urllib.request在Python的官方文档均有介绍,附网址:
1.urllib.request:https://docs.python.org/3.1/library/urllib.request.html
2.urllib.parse:https://docs.python.org/3.1/library/urllib.parse.html
通过阅读官方文档,我们了解到:
1.urllib.request是开启URL的扩展库(Extensible library for opening URLs),该模块定义了帮助开启URLs(大部分HTTP)的方法和类,包括了基础认证和摘要认证(basic and digest authentication)、重定向、cookie等等。
2.urllib.parse的作用是分析URLs组成(Parse URLs into compons)。该模块制定了将URL字符串相关的标准接口
主要功能:(1)将URL字符串拆分成各个部分的(包括编址方案、网络位置、路径等等)。
(2)讲各个拆分部分重组为URL字符串。
(3)将“相对URL”(relative URL)转换成“绝对URL”(absolute URL)。
所以研究网络爬虫,这两个模块应该是基本的。
后面就好理解了,在一个循环体下,利用urllib.equest.urlopen()函数捕获网页内容,然后存入自动命名的文件中。
if __name__ == '__main__': statements
这行代码中__name__ == '__main__'的作用是:让该python文件既可以独立运行,也可以当做模块导入到其他文件。当导入到其他的脚本文件的时候,此时__name__的名字其实是导入模块的名字,不是'__main__', main代码里面的就不执行了。(摘自文章:《Python 关于 name main的使用》)
最后,给变量赋值,执行baidu_tieba()实现页面的捕捉。