【问题标题】:Recieve data in inner attr using XPath使用 XPath 在内部属性中接收数据
【发布时间】:2019-02-22 11:46:42
【问题描述】:

我想在div 中获取文本以及ulli 等内部属性

我的 html 层次结构如下所示

<div>
  text
  <ul>
     <li>text</li>
     <li>text</li>
     <li>text</li>
  </ul>
</div>

所以我可以使用xpath('div/text()') 函数获取 div 文本,但我无法在内部属性中获取其他文本。有人可以帮助我如何正确地做到这一点。

【问题讨论】:

  • 我们可以使用 BeautifulSoup 吗?
  • 我想用 xpath 来做,但如果我找不到解决问题的方法,我将使用 BeautifulSoup
  • 好的,我使用这两种方法发布了答案。看看有没有用?

标签: python html parsing xpath


【解决方案1】:

使用BeautifulSoup:

from bs4 import BeautifulSoup
import urllib

test = '''<div>text_0<ul>
     <li>text_1</li>
     <li>text_2</li>
     <li>text_3</li>
  </ul>
</div>'''

soup = BeautifulSoup(test, 'html.parser')
data = soup.find_all("div")
for d in data:
    print(d.text)

输出

text_0
text_1
text_2
text_3

使用xpath

import lxml.html as LH

content = '''<div>text_0<ul>
     <li>text_1</li>
     <li>text_2</li>
     <li>text_3</li>
  </ul>
</div>'''
root = LH.fromstring(content)
for elem in root.xpath('//div/descendant::text()'):
    print(elem)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    相关资源
    最近更新 更多