Создание селектора CSS для поиска нескольких идентификаторов в одном снимке - PullRequest
0 голосов
/ 21 декабря 2018

Я определил селекторы css в скрипте, чтобы получить текст в span элементах , и я получаю их соответственно.Однако способ, которым я пытался, определенно грязный.Я просто разделил различные css-селекторы, используя запятую, чтобы скрипт понял, что я за тем или иным.

Если бы я выбрал xpath, я мог бы использовать 'div//span[.="Featured" or .="Sponsored"]', но в случае css-селектора я ничего не мог найтипохожи, чтобы служить той же цели.Я знаю, используя 'span:contains("Featured"),span:contains("Sponsored")' Я могу получить текст, но между ними, как обычно, есть запятая.

Какой идеальный способ найти элементы (в разных идентификаторах) с помощью селекторов CSSкроме запятой?

Моя попытка до сих пор с:

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)

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Если вы просто хотите получить весь текст «span» из HTML, тогда должно хватить следующего:

root_spans = root.xpath('//span')

for i, root_spans in enumerate(root_spans):
    span_text = root_spans.xpath('.//text()')[0]
    print(span_text)
0 голосов
/ 22 декабря 2018

Вы можете сделать:

.rest-list-information div span

Но я считаю плохой идеей считать запятую беспорядочной.Вы не найдете много таблиц стилей без запятых.

...