写一个爬虫程序,使用 lxml.html 分析网页
遇到一个正文带图片的网页,无法正常解析
不带图片的正文部分是这样的:
<font face="宋体" size="3"><!--HTMLBUILERPART0--><DIV style="FLOAT: left"><script type="text/javascript" src="/2014newad.js"></script><br><script type="text/javascript" src="/xyoushangjiaoguanggao.js"></script><br><script type="text/javascript" src="/3youshangjiaoguanggao.js"></script></DIV> 我是文本<BR><BR>
我是文本<BR><BR>
我是文本<BR><BR>
<!--/HTMLBUILERPART0--><br><div align="center"></div> </font>
带图片的正文部分是这样的:
<font face="宋体" size="3"><!--HTMLBUILERPART0--><DIV style="FLOAT: left"><script type="text/javascript" src="/2014newad.js"></script><br><script type="text/javascript" src="/xyoushangjiaoguanggao.js"></script><br><script type="text/javascript" src="/3youshangjiaoguanggao.js"></script></DIV>
<center><img border="0" src="zz.jpg" width="126" height="144"></center><BR><BR>
我是文本<BR><BR>
我是文本<BR><BR>
<!--/HTMLBUILERPART0--><br><div align="center"></div> </font>
中间多出了:
<center><img border="0" src="zz.jpg" width="126" height="144"></center>
解析代码为:
body = doc.xpath("/html/body")[0]
lines = body.xpath("//font[@face=\"宋体\" and @size=\"3\"]/*")
context = []
for line in lines:
if not line.tail:
continue
context.append(line.tail)
return context
代码解析不带图片的正文正常
解析带图片的正文,无法得到图片和文本节点(跟 if not line.tail 无关)
1
keakon 2017-08-10 18:50:58 +08:00 1
因为这是个错误的 html,font 是 inline 元素,center 是 block 元素,lxml 在构造时会把 center 移到 font 外部。
|
2
zhusimaji 2017-08-10 19:34:30 +08:00 via iPhone
爬虫就用 bs4 解析,方便快捷
|