解决:return _compile(pattern, flags).search(string) TypeError: expected string or buffer(解决的拼音)

网友投稿 379 2022-08-26


解决:return _compile(pattern, flags).search(string) TypeError: expected string or buffer(解决的拼音)

今天写爬虫,爬取MM图片页面的标题时,遇到了一个问题,上图:

看看我的代码:

1 import urllib 2 import urllib2 3 import re 4 5 class JPMSG: 6 7 def __init__(self, baseUrl): 8 self.baseUrl = baseUrl 9 10 def getPage(self, viewNum):11 try:12 url = self.baseUrl + str(viewNum) + '.html'13 request = urllib2.Request(url)14 response = urllib2.urlopen(request)15 #print response16 return response17 except urllib2.URLError, e:18 if hasattr(e, "reason"):19 print "爬取MM图片失败,失败原因", e.reason20 return None21 22 def getTitle(self):23 page = self.getPage(13235)24 pattern = re.compile('

(.*?)

', re.S)25 result = re.search(pattern, page)26 if result:27 print result.group(0)28 return result.group(0).strip()29 else:30 return None

哈哈,发现问题了吗?原因是我的返回的response没加read(),应该是return response.read()

好了,一波未平,一波又起。上图:

为什么我的正则表达式匹配的标题连标签都匹配下来了,我们要的仅仅是标题啊。

原因就出在print result.group(0)身上,group()的方法,当有多个参数时是以元组形式返回,编号0表示整个匹配的子串,而group(1)才是我们要的第一个也是唯一一个元素。

修改后,我们得到了正确的标题:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python爬虫之利用正则表达式爬取内涵吧(python正则表达式菜鸟教程)
下一篇:远程控制python(远程控制电脑命令)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~