首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

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

2012-02-15 
python用正则解析html的问题用py读取网页,并简单地解析html源码,遇到了一些问题,还希望各位能花些时间帮忙

python用正则解析html的问题
用py读取网页,并简单地解析html源码,遇到了一些问题,还希望各位能花些时间帮忙解答一下。
py版本是2.7,系统平台是win
比如cn.bing.com的网页,有<div id="sw_pb"></div>的部分。我想用正则获取到这部分。

Python code
import re, urllib2request = 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, urllib2request = 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)

热点排行