python网络爬虫学习(二)一个爬取百度贴吧的爬虫程序

今天进一步学习了python网络爬虫的知识,学会了写一个简单的爬虫程序,用于爬取百度贴吧的网页并保存为HTML文件。下面对我在实现这个功能时的代码以及所遇到的问题的记录总结和反思。

首先分析实现这个功能的具体思路:
通过对贴吧URL的观察,可以看出贴吧中的帖子的URL有这样一个特征,以“http://tieba.baidu.com/p/4463392102?pn=3”这个URL为例,它由“http://tieba.baidu.com/p/4463392102?”和“pn=3”组成,其中,前半部分为帖子第一页的URL,而“pn=”则决定了第几页(比如pn=3位第三页)。通过这样的分析我们大致可以获得这样的思路:

1.通过用户输入确定URL的前半部分,起始页码和终止页码
2.通过循环实现对要保存文件的命名,下载进度显示等功能的实现
3.将解析到的HTML文档写入我们之前创建的文件之中
4.关闭文件,程序结束

代码如下:

# -*- coding: utf-8 -*-
#---------------------------------------
#   程序:百度贴吧爬虫
#   版本:0.1
#   作者:Kelvin
#   日期:2016-05-21
#   语言:Python 2.7
#   操作:输入带分页的地址,去掉最后面的数字,设置一下起始页数和终点页数。
#   功能:下载对应页码内的所有页面并存储为html文件。
#---------------------------------------
import urllib2,string
#定义贴吧爬虫函数
def tieba(url,start,end):
    #从start到end+1进行循环
    for i in range(start,end+1):
        fName=string.zfill(i,5)+'.html'#将文件命名为六位的带有序号的html文件
        print '正在下载第'+str(i)+'个文件,并将其转存为'+fName
        file=open(fName,'w+')
        #获取内容并进行解析
        response=urllib2.urlopen(url+str(i)).read()
        #写入文件
        file.write(response)
        #关闭文件
        file.close()
#--------------------------------------------------
#获取用户输入
bdurl=str(raw_input(u'请输入帖子的URL,不包含pn之后的数字\n'))
start=int(raw_input(u'请输入起始页码\n'))
end=int(raw_input(u'请输入终止页码\n'))

#调用函数
tieba(bdurl,start,end)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值