【发布时间】:2018-02-12 04:16:53
【问题描述】:
我已经编写了一些在 python 中使用的选择器来获取一些项目和它的价值。我希望刮掉不做样式的物品。但是,当我运行我的脚本时,它只获取项目但无法达到由“br”标签分隔的那些项目的值。我怎样才能抓住它们?在这种情况下,我不打算使用 xpath 来达到目的。提前致谢。
这里是元素:
html = '''
<div class="elems"><br>
<ul>
<li><b>Item Name:</b><br>
titan
</li>
<li><b>Item No:</b><br>
23003400
</li>
<li><b>Item Sl:</b><br>
2760400
</li>
</ul>
</div>
'''
这是我的脚本,其中包含 css 选择器:
from lxml import html as e
root = e.fromstring(html)
for items in root.cssselect(".elems li"):
item = items.cssselect("b")[0].text_content()
print(item)
执行后,我得到的结果:
Item Name:
Item No:
Item Sl:
我追求的结果:
Item Name: titan
Item No: 23003400
Item Sl: 2760400
【问题讨论】:
-
我会说这是Get all text inside a tag in lxml的副本。
-
我按照这两个链接查看我的问题是否真的重复或相同。答案很明确:没有。在这两个链接中,我看不到“css-selectors”标签。此外,我坚持只根据选择器来回答。那么,怎么可能重复呢?
-
@Topto,
.cssselect只不过是.xpath方法的包装。看这里github.com/scrapy/cssselect:“cssselect 解析 CSS3 选择器并将它们转换为 XPath 1.0 表达式”。因此,在这里使用 XPath 或 CSS 选择器实际上没有区别。 -
@skovorodkin,是的,没错。但是,我的意图是使用 css 选择器完成任务,这就是我试图在答案中展示的内容。谢谢。
标签: python python-3.x web-scraping css-selectors lxml