Как получить все теги <img>, но исключить теги <img> в теге <div> с идентификатором нижнего колонтитула, используя xpath?

0

Вы, ребята, знаете, как я могу получить все теги img, но исключать теги img под div с id нижнего колонтитула с помощью xpath?

В настоящее время для получения всех тегов img на странице html я делаю это: imgs = tree.xpath('//img')

Но я хочу исключить все теги img под div с id нижнего колонтитула, поэтому я делаю это:

imgs = tree.xpath('//*[not(div[@id="footer"])]//img') <- НО ЭТО НЕ РАБОТАЕТ

Теги:
xpath
web-scraping

1 ответ

6
Лучший ответ

Должно быть что-то вроде:

imgs = tree.xpath('//img[not(parent::div[@id="footer"])]')

Сломать:

  • //img - поиск всех тегов <img>
  • [] - где пункт
  • not(parent::div[@id="footer"]) - не имеет (прямого) родительского div с атрибутом id со значением footer

Если элемент <div> не является прямым родителем <img> а одним из его родителей, используйте:

imgs = tree.xpath('//img[not(ancestor::div[@id="footer"])]')
  • 0
    Спасибо за быстрый ответ. Однако я думаю, что это все еще не работает, потому что результаты все еще те же. Количество всех тегов img на странице равно 85, количество всех тегов img в div с идентификатором нижнего колонтитула равно 10, и когда я попробовал ваше решение выше, счетчик все еще равен 85, но он должен быть только 75, исключая теги img из div с идентификатором нижнего колонтитула.
  • 0
    Привет сэр! Теперь я подтвердил, что ваше решение выше работает. Благодарю. Однако это работает, только если теги img являются 1-м дочерним элементом div с идентификатором footer. Как я могу исключить все теги img в div с идентификатором нижнего колонтитула независимо от того, являются ли теги img его первым дочерним, вторым дочерним, третьим дочерним и так далее?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню