今天写爬虫,爬取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的更多相关文章

  1. 解决:error: Cannot fetch repo (TypeError: expected string or buffer)

    同步源码,问题重现: Fetching project platform/external/libopus Fetching project repo error: Cannot fetch repo ...

  2. TypeError: expected string or buffer的解决方法

    错误种类:TypeError: expected string or buffer 具体错误解释:这是因为返回的变量不是字符类型,而导致此错误 具体解决方法:在具体程序段前加if判断语句,判断程序返回 ...

  3. 关于Python json解析过程遇到的TypeError: expected string or buffer

    关于Python json解析过程遇到的问题:(爬取天气json数据所遇到的问题http://tianqi.2345.com/) part.1 url——http://tianqi.2345.com/ ...

  4. a=re.findall('b',c)报错提示:TypeError:expected string or buffer

    目的:想通过findall选取某个unicode编码的字符串列表(列表里面有元组) 问题:报错[TypeError:expected string or buffer] 现在测试下: 定义一个有元组的 ...

  5. 导入json文件报错,TypeError expected string or buffer

    导入json文件报错,TypeError expected string or buffer 原因:用字符串赋值后,python会把双引号转换为单引号 import json data = [{&qu ...

  6. TypeError: expected string or bytes-like object

    在写Python代码的时候,遇到了"TypeError: a bytes-like object is required, not 'str'"错误,此处实验机器的Python环境 ...

  7. html内容写入到文件中的时候出现‘TypeError: expected a character buffer object’错误

    代码如下: with open('ryf.md', 'a') as f: f.write(content) # content是html内容 原因是写入文件要求写入内容是str,直接转换成str即可, ...

  8. TypeError: sequence item 0: expected string, Tag found

    原始代码: soup = BeautifulSoup(result, 'html.parser') content_list = soup.find_all('p', attrs={"cla ...

  9. 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 ...

随机推荐

  1. AngularCli项目中添加字体图标(Font)详解

    本文主要讲如何在AngularCli生成的项目中使用字体图标. 一 SVG图标准备 将需要转换为字体图标的图片转换为SVG格式. 这个让项目视觉设计师搞定即可. 二 SVG图标转Font 可以通过Ic ...

  2. 常用代码块:创建httpclient 2

    HttpGet httpGet = new HttpGet(url);SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(ne ...

  3. sql server监控图解

  4. Android基础入门教程

    http://www.kancloud.cn/wizardforcel/w3school-android/100491

  5. 剑指offer 面试33题

    面试33题:题:二叉搜索树的后序遍历序列 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路:递 ...

  6. Mapinfo修改道路方向

    在mapinfp工具管理添加插件Reverse Line Direction,就可以修改道路方向 插件

  7. CSS 中z-index全解析(摘自阿里西西)

    z-index全解析 Z-index属性决定了一个HTML元素的层叠级别.元素层叠级别是相对于元素在Z轴上(与X轴Y轴相对照)的位置而言.一个更高的Z-index值意味着这个元素在叠层顺序中会更靠近顶 ...

  8. Centos----本地yum源制作

    本地YUM源制作 1.   YUM相关概念 1.1.  什么是YUM YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的S ...

  9. Bootstrap主题库

    主题 https://startbootstrap.com/template-categories/all/ https://bootstrapmade.com/ http://www.jqueryf ...

  10. flex 实现图片播放 方案二 把临时3张图片预加载放入内存

    该方案,是预加载:前一张,当前,下一张图片,一共3张图片放入内存中.这样对内存的消耗可以非常小,加载之后的图片就释放内存. 下面示例一个是类ImagePlayers,一个是index.mxml pac ...