innerHTML方法用于提取某个标签内部的HTML内容,多数HTML Parser都实现了该方法。
BeautifulSoup暂未提供innerHTML方法,但我们可以通过遍历子元素并拼接html来实现它。
例如,我需要获取豆瓣音乐上某个专辑的描述信息,它位于一个id为info的div中。
参考:http://music.douban.com/subject/1394539/
我需要图示部分的html代码:
这时只需要一行代码:
album_info = u''.join([unicode(x) for x in soup.find('div', id='info').contents]).strip()
值得注意的是,豆瓣音乐的网页编码是utf8,需要先decode utf8再parse。
而在Beautiful内部,所有对象都是unicode object。
contents属性返回所有child element的列表。
因为我是在windows中文版的系统下写这段脚本,当需要在命令提示符下输出内容的时候,还必须先encode gbk。
print album_info.encode('gbk', 'ignore')
参考链接:
http://stackoverflow.com/questions/8112922/beautifulsoup-innerhtml
好像可以调用 unicode(element) 输出html还是text之类的东西。
可以输出html,但是包含了容器本身。 比如一个div,innerHTML是没有这部分的。