python 爬虫匹配中文总是失败?

向各位大神请教个问题,初学python,我想提取"DJ00123987"和"号: DJ00123987"的部分,但是匹配中文总是失败。请问这是为什么?另外正则表达式的中文和空格应该怎么匹配?谢谢!编码格式都为UTF-8。

import re
html = '<span>微信号:DJ00123987</span>'
print html
a = re.search(u'<span>微信号: (.*?)</span>', html, re.S).group(1)
b = re.search(u'<span>微信(.*?)</span>', html, re.S).group(1)
print a,b
阅读 9.1k
4 个回答

html 漏了u?
另外看下你整个文件保存的字符集,不然即使你加了u,如果文件是GBK的那么也可能遇到一些意外的问题。

  1. 字符集不同,如@DDTDDT 所说,你的html缺了unicode的标记u,但是正则表达式却用了unicode

  2. 你的微信号后面的冒号,一个是半角,一个是全角

可以使用Beautiful Soup

你正则表达式是 unicode 编码的,你的 html 是字符串类型的,在 python2 中中文字符一般设置成的是utf-8编码,你用 unicode 字符串的正则去获取 utf-8 编码的字符串当然就匹配失败了。

建议将 html 用 unicode 编码。

也就是拿到 utf-8 编码的html后 ,content = html.decode('utf-8')

再用正则匹配 content

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题