这个python代码有什么问题

时间:2015-10-31 15:01:14

标签: python

这是一个使用Web爬虫的代码。 我是学习python的初学者。所以我不知道如何解决。 这似乎与search()

有关
# -*- coding:utf-8 -*-
import urllib,urllib2,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().decode('utf-8')
            return response
        except urllib2.URLError,e:
            if hasattr(e,'reason'):
                print u'连接百度贴吧失败,错误原因',e.reason
                return None
    def getTitle(self):
        page = self.getPage(1)
        pattern = re.compile('<h3 class.*?px">(.*?)</h3>',re.S)
        result = re.search(pattern,page)
        if result:
            print result.group(1)
            return result.group(1).strip()
        else:
            return None
baseURL = 'http://tieba.baidu.com/p/4095047339'
bdtb = BDTB(baseURL,1)
bdtb.getTitle()

1 个答案:

答案 0 :(得分:1)

这会引发TypeError: expected string or buffer因为您需要urllib2.urlopen(request)时将re.search()返回的对象传递给str

如果您更改了返回值:

return responce  # returns the object

返回请求中包含的文本:

return responce.read()  # returns the text contained in the responce

您的脚本有效,执行后返回:

广告兼职及二手物品交易集中贴

此外,由于您正在使用Python 2.x,因此您可能希望将对象从class BDTB:更改为class BDTB(object),以便使用{{ 3}}。