最近解析一个网页,发现使用lxml的xpath解析出来的结果与我所认为的结果有差距。盲猜是lxml版本所致,更换后确实解析到了我想要的结果。以下是看图说话:

我的python版本是3.6.8
原网页结构为:
在这里插入图片描述
可以看到这个tbody下有很多的tr,我的xpath是这样写的:

html = etree.HTML(origin_data)
infos = html.xpath('//div[@class="page_right"]//table[2]')
info = etree.tostring(infos[0], encoding='utf-8').decode()
print(info)

当lxml的版本是4.9.1的时候,结果如下:
在这里插入图片描述
可以看到,被xpath定位后的所有的元素都一同被获取到了下来。

当lxml的版本是4.6.2的时候,结果如下:
在这里插入图片描述
可以看到,只获取到了xpath定位的table内的内容。

第一次发现因第三方包版本不同导致程序虽然可以运行但是结果不同的现象出现,以前一直没注意,以为无所谓,值此记录。

附带上一些wheel地址: Archived: Unofficial Windows Binaries for Python Extension Packages

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐