爬虫学习笔记(1)---简单的爬取百度贴吧
新时代的我们,需要的是数据说话,大数据时代,需要自动化的工具,学习方式就是遇佛杀佛,遇神杀神,不会什么查什么,逐个解决
作者网址:CSDN
1.第一遍+加上自己写的注释
1 # -*- coding: utf-8 -*- 2 #--------------------------------------- 3 # 程序:百度贴吧爬虫 4 # 版本:0.1 5 # 作者:why 6 # 日期:2013-05-14 7 # 语言:Python 2.7 8 # 操作:输入带分页的地址,去掉最后面的数字,设置一下起始页数和终点页数。 9 # 功能:下载对应页码内的所有页面并存储为html文件。 10 #--------------------------------------- 11 12 import string, urllib2 13 14 #定义百度函数 15 def baidu_tieba(url,begin_page,end_page): 16 for i in range(begin_page, end_page+1): 17 sName = string.zfill(i,5) + '.html'#自动填充成六位的文件名 string的方法有.zfil 网页 最后几行能找到string.
zfill
(s, width) width显示0,然后s附在最后 18 print '正在下载第' + str(i) + '个网页,并将其存储为' + sName + '......' #显示下载进程 19 f = open(sName,'w+') #用来写入更新,网址 20 m = urllib2.urlopen(url + str(i)).read() #urllib.urlopen的用法网址
.read的用法(包括了write的用法)用来阅读网址内容 网址 返回的是string 这个地方还是不懂?为什么要打开,写入 21 f.write(m) 22 f.close() #网址用来释放空间 23 24 25 #-------- 在这里输入参数 ------------------ 26 27 # 这个是山东大学的百度贴吧中某一个帖子的地址 28 #bdurl = 'http://tieba.baidu.com/p/2296017831?pn=' #网址太老,已经被删了 最好换成http://tieba.baidu.com/p/2251718675?pn= 29 #iPostBegin = 1 30 #iPostEnd = 10 31 32 bdurl = str(raw_input(u'请输入贴吧的地址,去掉pn=后面的数字:\n'))
#raw_input()里面的u代表了utf-8编码(因为括号里用到了中文),返回一般是str,为什么还要加str() 如果是输入的是其他的字符比如:、
返回类型就变成Unicode(我用type()函数检测的),对于有中文字符的Unicode编码,需要修改代码才行
33 begin_page = int(raw_input(u'请输入开始的页数:\n')) #把返回的string转变成int类型
34 end_page = int(raw_input(u'请输入终点的页数:\n')) #同理
35 #-------- 在这里输入参数 ------------------
36
37
38 #调用
39 baidu_tieba(bdurl,begin_page,end_page) #调用前面写的函数
经验:在jupyter上运行会出错,感觉是kernal的问题
下方是原配
1.第二遍(便于其他人复制黏贴,希望转载的把CSDN原作者附上,我的就不用了)
# -*- coding: utf-8 -*- #--------------------------------------- # 程序:百度贴吧爬虫 # 版本:0.1 # 作者:why # 日期:2013-05-14 # 语言:Python 2.7 # 操作:输入带分页的地址,去掉最后面的数字,设置一下起始页数和终点页数。 # 功能:下载对应页码内的所有页面并存储为html文件。 #--------------------------------------- import string, urllib2 #定义百度函数 def baidu_tieba(url,begin_page,end_page): for i in range(begin_page, end_page+1): sName = string.zfill(i,5) + '.html'#自动填充成六位的文件名 print '正在下载第' + str(i) + '个网页,并将其存储为' + sName + '......' f = open(sName,'w+') m = urllib2.urlopen(url + str(i)).read() f.write(m) f.close() #-------- 在这里输入参数 ------------------ # 这个是山东大学的百度贴吧中某一个帖子的地址 #bdurl = 'http://tieba.baidu.com/p/2296017831?pn=' #iPostBegin = 1 #iPostEnd = 10 bdurl = str(raw_input(u'请输入贴吧的地址,去掉pn=后面的数字:\n')) begin_page = int(raw_input(u'请输入开始的页数:\n')) end_page = int(raw_input(u'请输入终点的页数:\n')) #-------- 在这里输入参数 ------------------ #调用 baidu_tieba(bdurl,begin_page,end_page)
好奇心是进阶的唯一要求