这是一个使用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()
答案 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}}。