我已经在脚本中定义了CSS选择器,以获取 span
元素内的文本 ,并据此获取它们。但是,我尝试的方式绝对是混乱的。我只是使用逗号分隔了不同的css选择器,以使脚本理解我在这之后。
如果我选择xpath,我本可以使用'div//span[.="Featured" or .="Sponsored"]'
,但是在使用CSS选择器的情况下,我找不到类似的东西来达到相同的目的。我知道使用'span:contains("Featured"),span:contains("Sponsored")'
可以获取文本,但照常之间会有逗号。
使用css选择器(逗号除外)定位元素(具有不同ID)的理想方法是什么?
到目前为止我的尝试:
from lxml.html import fromstring
html = """
<div class="rest-list-information">
<a class="restaurant-header" href="/madison-wi/restaurants/pizza-hut">
Pizza Hut
</a>
<div id="featured other-dynamic-ids">
<span>Sponsored</span>
</div>
</div>
<div class="rest-list-information">
<a class="restaurant-header" href="/madison-wi/restaurants/salads-up">
Salads UP
</a>
<div id="other-dynamic-ids border">
<span>Featured</span>
</div>
</div>
"""
root = fromstring(html)
for item in root.cssselect("[id~='featured'] span,[id~='border'] span"):
print(item.text)
答案 0 :(得分:0)
您可以这样做:
.rest-list-information div span
但是我认为考虑逗号混乱是一个坏主意。您不会找到很多没有逗号的样式表。
答案 1 :(得分:0)
如果您只是想从HTML中获取所有“跨度”文本,则以下内容就足够了:
root_spans = root.xpath('//span')
for i, root_spans in enumerate(root_spans):
span_text = root_spans.xpath('.//text()')[0]
print(span_text)