Разбор ответа, созданного с помощью XPath - PullRequest
1 голос
/ 12 июня 2019

Используя Scrapy, я хочу извлечь некоторые данные из правильно сформированного HTML-сайта.С XPath я могу извлечь список элементов, но я не могу извлечь дополнительные данные из элементов списка, используя XPath

. Все XPath были протестированы с использованием XPather.Я проверил проблему, используя локальный файл, который содержит веб-страницу, та же проблема.

Вот так:

# Get the webpage
fetch("https://www.someurl.com")

# The following gives me the expected items from the HTML
products = response.xpath("//*[@id='product-list-146620']/div/div")

Элементы выглядят следующим образом:

<div data-pageindex="1" data-guid="13157582" class="col ">
  <div class="item item-card item-card--static">
    <div class="item-card__inner">
      <div class="item__image item__image--overlay">
        <a href="/www.something.anywhere?ref_gr=9801" class="ratio_custom" style="padding-bottom:100%">
        </a>
      </div>
      <div class="item__text-container">
        <div class="item__name">
          <a class="item__name-link" href="/c.aspx?ref_gr=9801">The text I want</a>
        </div>
      </div>
    </div>
  </div>
</div>

При использовании следующего Xpath для извлечения текста, который я хочу, я ничего не получаю:

XPATH_PRODUCT_NAME = "/div/div/div/div/div[contains(@class,'item__name')]/a/text()"
products[0].xpath(XPATH_PRODUCT_NAME).extract()

Вывод пуст, почему?

1 Ответ

0 голосов
/ 12 июня 2019

Попробуйте следующий код.

XPATH_PRODUCT_NAME = ".//div[@class='item__name']/a[@class='item__name-link']/text()"
products[0].xpath(XPATH_PRODUCT_NAME).extract()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...