专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Perl/Python

python用正则解析html的有关问题

发布时间:2011-06-29 20:11:18 文章来源:www.iduyao.cn 采编人员:星星草
python用正则解析html的问题
用py读取网页,并简单地解析html源码,遇到了一些问题,还希望各位能花些时间帮忙解答一下。
py版本是2.7,系统平台是win
比如cn.bing.com的网页,有<div id="sw_pb"></div>的部分。我想用正则获取到这部分。
Python code

import re, urllib2

request = urllib2.urlopen('http://cn.bing.com/')
html = request.read()

p = re.compile('<div id="sw_pb">.*</div>')
print p.match(html)



最后一行输出的结果是 None

后来想到可能是编码的问题,稍稍改写了下代码
Python code

# -*- coding: utf-8 -*-
import re, urllib2

request = urllib2.urlopen("http://cn.bing.com/")
html = request.read()

p = re.compile(unicode('<div id="sw_pb">.*</div>', 'utf-8').encode('utf-8'))
print p.match(html)


结果还是 None,无匹配项

py用的不多,经验不足,不明白这种情况是为什么……还希望各位能解惑,谢谢。

------解决方案--------------------
翻翻文档先,看看match、search这两个函数有啥不同...
------解决方案--------------------
2楼的方法可以;楼主的问题在于应该用search,而不是match;

另外正则也稍微有点问题,应该用.*?而不是.*,否则贪婪匹配到最后一个</div>才结束。

p = re.compile('<div id="sw_pb">(.*?)</div>')
print p.search(html).group(1)
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: