Beautiful Soup 添加HTML属性引号
谢谢大家的帮助,
我现在正在用Beautiful Soup这个工具来从一段HTML代码中提取评论标签。问题是,我抓取到的HTML代码里,标签属性的值没有用引号括起来。但是Beautiful Soup似乎会自动加上这些引号,有时候这样做是好的,但在我的情况下就不太合适。
那么,有什么好的方法可以让Beautiful Soup在处理时不加引号,或者说能不能把这些引号再加回来呢?
1 个回答
0
你有一个标签,其中一些属性值是用引号括起来的,而另一些则没有。这里提到的“加上引号”是什么意思呢?你可以选择逐个编辑每个属性值,把引号加上(这可能不是个好主意),或者在渲染的时候再加上引号。这取决于你对这个标签还做了什么其他处理。下面的代码是在打印时加上引号:
input = "<html><sometag attr1=dont_quote_me attr2='but this one is quoted'>Text</sometag></html>"
bs = BeautifulSoup(input)
bs2 = bs.find('sometag')
for a in bs2.attrs:
(attr,aval) = a
print "%s='%s'" % (attr,aval),
结果是 attr1='dont_quote_me' attr2='but this one is quoted'
选择哪种方式由你决定。我假设这些属性值都是单个单词,也就是符合正则表达式 \w+
的格式。