因刚刚开始学习python,水平有限,仅供参考,如果错误,欢迎大家在指出改正!
1.URL 地址分析
我选取的一个百度贴吧帖子的网址是http://tieba.baidu.com/p/4739169817(这是一个秦时明月吧的帖子,因小弟是秦迷),各位可以点击进去查看一下。
如果点击只看楼主或者翻页,则会产生两个参数http://tieba.baidu.com/p/4739169817?pn=2或http://tieba.baidu.com/p/4739169817?see_lz=1,分析一下该网址如下:
- http://tieba.baidu.com/p/4739169817?see_lz=1 这是网址
- see_lz 该参数表示是否只看楼主发的帖子,1表示true
- pn 该参数表示表示第几页
2.页面抓取
我们构建一个类BDTB,该类作为爬取百度贴吧的主要的类,我们利用urllib包中的方法urlopen。
我选用的python版本为:python3.5,所以urllib包下又有四个包,分别为requeset、error…(详情可查看官方文档)
代码如下:
import urllib.request
import urllib.error
import re
#百度贴吧爬虫类
class BDTB:
def __init__(self, baseUrl, seeLZ):
self.baseURL = baseUrl
self.seeLZ = '?see_LZ=' + str(seeLZ)
self.tool = Tool()
self.file = None
self.defaultFileTitile = u'百度贴吧'
self.floor = 1
def getPage(self, pageNum):
try:
url = self.baseURL + self.seeLZ + '&pn=' + str(pageNum)
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
return response.read().decode('utf-8')
except urllib.error.URLError as e: