Ориентация на идентификаторы с помощью селектора scrapy css - PullRequest
0 голосов
/ 20 июня 2019
HTML = '
    <div class="box">
        <div id="grid">
            <div class="content">hello</div>
        </div>
    </div>
'

- здесь что-то происходит -

response.css('div.thread [*] div.mix').getall()

* как мне искать div без класса? Независимо от того, какое предложение я нахожу в Интернете, я получаю сообщение об ошибке «ожидается, что что-то получено разделителем ...»

Ответы [ 3 ]

2 голосов
/ 21 июня 2019

Вам необходимо использовать # для атрибута id:

response.css('div#grid')

Или вы можете выбрать его по нотации атрибута:

response.css('div[id="grid"]')
0 голосов
/ 21 июня 2019

Если вы хотите выбрать div с определенным идентификатором, вы можете сделать то, что предлагают другие ответы.

Однако, если вы хотите выбрать любой div без атрибута класса, используйте:

.css('div:not([class])')
0 голосов
/ 21 июня 2019

Вы можете попробовать что-то вроде этого.Логика в том, что он найдет None и потерпит неудачу первым, если проверит отсутствие класса, а затем добавит его в список no_class_divs.Если вы хотите найти по идентификатору, примите ответ @gangabass.Если вы хотите найти элементы div, у которых нет атрибута класса, мой ответ должен сработать.

no_class_divs = []
divs = response.css("div")

for div in divs:
    if div.css('::attr(class)').extract_first():
        continue
    else:
        no_class_divs.append(div)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...