解决:return _compile(pattern, flags).search(string) TypeError: expected string or buffer
今天写爬虫,爬取MM图片页面的标题时,遇到了一个问题,上图:

看看我的代码:
import urllib
import urllib2
import re
class JPMSG:
def __init__(self, baseUrl):
self.baseUrl = baseUrl
def getPage(self, viewNum):
try:
url = self.baseUrl + str(viewNum) + '.html'
request = urllib2.Request(url)
response = urllib2.urlopen(request)
#print response
return response
except urllib2.URLError, e:
if hasattr(e, "reason"):
print "爬取MM图片失败,失败原因", e.reason
return None
def getTitle(self):
page = self.getPage(13235)
pattern = re.compile('<div class="bttitke"><h2>(.*?)</h2>', re.S)
result = re.search(pattern, page)
if result:
print result.group(0)
return result.group(0).strip()
else:
return None
哈哈,发现问题了吗?原因是我的返回的response没加read(),应该是return response.read()
好了,一波未平,一波又起。上图:

为什么我的正则表达式匹配的标题连标签都匹配下来了,我们要的仅仅是标题啊。
原因就出在print result.group(0)身上,group()的方法,当有多个参数时是以元组形式返回,编号0表示整个匹配的子串,而group(1)才是我们要的第一个也是唯一一个元素。
修改后,我们得到了正确的标题:

解决:return _compile(pattern, flags).search(string) TypeError: expected string or buffer的更多相关文章
- 解决:error: Cannot fetch repo (TypeError: expected string or buffer)
同步源码,问题重现: Fetching project platform/external/libopus Fetching project repo error: Cannot fetch repo ...
- TypeError: expected string or buffer的解决方法
错误种类:TypeError: expected string or buffer 具体错误解释:这是因为返回的变量不是字符类型,而导致此错误 具体解决方法:在具体程序段前加if判断语句,判断程序返回 ...
- 关于Python json解析过程遇到的TypeError: expected string or buffer
关于Python json解析过程遇到的问题:(爬取天气json数据所遇到的问题http://tianqi.2345.com/) part.1 url——http://tianqi.2345.com/ ...
- a=re.findall('b',c)报错提示:TypeError:expected string or buffer
目的:想通过findall选取某个unicode编码的字符串列表(列表里面有元组) 问题:报错[TypeError:expected string or buffer] 现在测试下: 定义一个有元组的 ...
- 导入json文件报错,TypeError expected string or buffer
导入json文件报错,TypeError expected string or buffer 原因:用字符串赋值后,python会把双引号转换为单引号 import json data = [{&qu ...
- TypeError: expected string or bytes-like object
在写Python代码的时候,遇到了"TypeError: a bytes-like object is required, not 'str'"错误,此处实验机器的Python环境 ...
- html内容写入到文件中的时候出现‘TypeError: expected a character buffer object’错误
代码如下: with open('ryf.md', 'a') as f: f.write(content) # content是html内容 原因是写入文件要求写入内容是str,直接转换成str即可, ...
- TypeError: sequence item 0: expected string, Tag found
原始代码: soup = BeautifulSoup(result, 'html.parser') content_list = soup.find_all('p', attrs={"cla ...
- TypeError: 'in <string>' requires string as left operand, not int
报错 Traceback (most recent call last): File "D:/PyCharm 5.0.3/WorkSpace/2.NLP/9.DL在NLP中的应用/4. Ve ...
随机推荐
- jquery拓展插件-popup弹窗
css:<style> /* 公共弹出层 */ .popWrap{position: fixed;left: 0;top: 0; width: 100%;height: 100%;z-in ...
- [Erlang危机](5.1.3)进程
原创文章,转载请注明出处:server非业余研究http://blog.csdn.net/erlib 作者Sunface 联系邮箱:cto@188.com Processes Trying to ge ...
- MySQL 5.6 死锁演示 及 日志分析
1. 表结构 CREATE TABLE dead_update ( a ) ', PRIMARY KEY (a) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; ), ...
- C++程序设计练习(一)
// 1. 在屏幕上输出内容 #include<iostream> using namespace std; int main(){ int i= 1; cout<<" ...
- spring mvc 关键接口 HandlerMapping HandlerAdapter
HandlerMapping Spring mvc 使用HandlerMapping来找到并保存url请求和处理函数间的mapping关系. 以DefaultAnnotationHandlerMa ...
- "export" in SHELL
在shell中,若某一变量需要在随后的子程序中运行,则需要以 export 来使变量变成环境变量: export var export的用法总结: 1:一个shell中用export定义的变量,只对当 ...
- 【整理学习Hadoop】Hadoop学习基础之二:分布式
分布式系统就是将系统的应用层,数据层或其它部分构架成分布(物理和逻辑上的都可以)状(通常是网状).分布式系统通常是为了增强系统的可扩展性.稳定性和执行效率.比如在线游戏通常就是分布系统,里面所谓的 ...
- 谷歌机器学习速成课程---3降低损失 (Reducing Loss):学习速率
正如之前所述,梯度矢量具有方向和大小.梯度下降法算法用梯度乘以一个称为学习速率(有时也称为步长)的标量,以确定下一个点的位置.例如,如果梯度大小为 2.5,学习速率为 0.01,则梯度下降法算法会选择 ...
- 值得关注的10个Python语言学习博客
大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建立这个博客的原因,向大家分享我自己学到的新知识.今天我向大家推荐10个值得我们关注 ...
- Python学习进程(4)运算符
本节主要介绍Python的运算符. (1)Python语言支持的运算符类型: .算术运算符 .比较(关系)运算符 .赋值运算符 .逻辑运算符 .位运算符 .成员运算符 .身份运算符 . ...