RPA 进行百度贴吧帖子的爬取

1. 对百度贴吧的任意帖子进行抓取 2. 指定是否只抓取楼主发帖内容 3. 将抓取到的内容分析并保存到文件
首先,我们先观察一下百度贴吧的任意一个帖子。 比如:http://tieba.baidu.com/p/3138733512?see_lz=1&pn=1,这是一个关于 NBA50 大的盘点,分析一下这个地址。
http:// 代表资源传输使用 http 协议
tieba.baidu.com 是百度的二级域名,指向百度贴吧的服务器。
/p/3138733512 是服务器某个资源,即这个帖子的地址定位符
see_lz 和 pn 是该 URL 的两个参数,分别代表了只看楼主和帖子页码,等于 1 表示该条件为真

我们直接尝试一下,定义一个类名叫 BDTB (百度贴吧),一个初始化方法,一个获取页面的方法。 其中,有些帖子我们想指定给程序是否要只看楼主,所以我们把只看楼主的参数初始化放在类的初始化上,即 init 方法。另外,获取页面的方法我们需要知道一个参数就是帖子页码,所以这个参数的指定我们放在该方法中。 综上,我们初步构建出基础代码如下:
author = ‘ls’

-- coding:utf-8 --

import urllib
import urllib2
import re

#百度贴吧爬虫类
class BDTB:

#初始化,传入基地址,是否只看楼主的参数
def __init__(self,baseUrl,seeLZ):
    self.baseURL = baseUrl
    self.seeLZ = '?see_lz='+str(seeLZ)

#传入页码,获取该页帖子的代码
def getPage(self,pageNum):
    try:
        url = self.baseURL+ self.seeLZ + '&pn=' + str(pageNum)
        request = urllib2.Request(url)
        response = urllib2.urlopen(request)
        print response.read()
        return response
    except urllib2.URLError, e:
        if hasattr(e,"reason"):
            print u"连接百度贴吧失败,错误原因",e.reason
            return None

baseURL = ‘http://tieba.baidu.com/p/3138733512
bdtb = BDTB(baseURL,1)
bdtb.getPage(1)