在寫爬蟲的時(shí)候發(fā)現(xiàn)BeautifulSoup的html.parser解析器有個(gè)坑裹粤,導(dǎo)致正文抽取失敗尽超。簡(jiǎn)單演示如下:
In [1]: from bs4 import BeautifulSoup
In [2]: s = BeautifulSoup('<div><div></p>abc</div></div>', 'html.parser')
In [3]: s
Out[3]: <div><div></div></div>abc
</p>被解析器忽略掉了案糙,但是神奇的是,閉div被提前了愁拭,正文abc被挪到了div之外,導(dǎo)致通過(guò)定位div無(wú)法抽取到正文亏吝。
如何fix岭埠?使用html5lib即可,如下:
In [4]: s = BeautifulSoup('<div><div></p>abc</div></div>', 'html5lib')
In [5]: s
Out[5]: <html><head></head><body><div><div><p></p>abc</div></div></body></html>