是这样的:
A
|
B('table',{'class':'super'})
|
C
|
D('table',{'class':'super'})
|
E
|
F (div,{'id':'tt'})
xxx
xxx
xxx
|
Z
|
</Z>
|
</Y>
|
</X>
实际最终需求是:获得目标('table',{'class':'super'}),返回 BeautifulSoup 类型 实际情况是:('table',{'class':'super'})在整个页面里也太多了
第 1 个问题:因为 F 的特征明显(页内唯一,而且必定在想要的目标('table',{'class':'super'})之下),F 容易做到绝对定位, 目前已经返回了 BeautifulSoup 类型->tarGet 举例为:
tarGet = BeautifulSoup(htmlPageString,'lxml').find(div,{'class':'tt'})
现在如何根据 tarGet 的定位,向上追到最近的('table',{'class':'super'})
第 2 个问题: 同上,上追到最近的('table',{'class':'super'}),在同级的标签里,找另外一个('table',{'class':'holyhigh'})
以上两个问题的解决方式,我也可以通过一个一个环节的 for 循环,去 if BeautifulSoup.parent 做判断,再最终获得目标 BeautifulSoup 类型的。。。
但是如果 htmlPageString 样本量大,加上读取网页文件( I/O ),python 本来就不快(相对而言),if 又 10 几个+flag 判断,那么历遍完,耗时就很可观。
BeautifulSoup 本身有无可能,直接做到以上两种情况的直接定位? 或者更好的定位思路?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.