爬虫学习笔记(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(swidth) 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)

 

posted @ 2017-02-17 21:39  gkgy  阅读(779)  评论(0编辑  收藏  举报