Как я могу получить свой xpath, предоставленный chrome, для извлечения правильного текста вместо пустой строки? - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь получить данные свойств из "http://web6.seattle.gov/DPD/ParcelData/parcel.aspx?pin=9906000005".

. Я идентифицирую интересующий меня элемент (данные" Базовая зона "в таблице) и скопировал xpath изИнструмент разработчика Chrome. Когда я запускаю его через scrapy, я получаю пустой список.

Я использовал оболочку scrapy для загрузки сайта и набрал несколько запросов на ответ. Страница загружается, и я могу очистить заголовок, но ничего втело страницы загружается, все выглядит как пустые списки.

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

class ZoneSpider(scrapy.Spider):
    name = 'zone'
    allowed_domains = ['web']
    start_urls = ['http://web6.seattle.gov/DPD/ParcelData/parcel.aspx? 
pin=9906000005']

def parse(self, response):
    self.log("base_zone: %s" % response.xpath('//*[@id="ctl00_cph_p_i1_i0_vwZoning"]/tbody/tr/td/table/tbody/tr[1]/td[2]/span/text()').extract())
    self.log("use: %s" % response.xpath('//*[@id="ctl00_cph_p_i3_i0_vwKC"]/tbody/tr/td/table/tbody/tr[3]/td[2]/text()').extract())

Вы увидите, что журналы возвращают пустой список. Когда я использую запрос xpath для заголовка, я получаю правильный ответ:

response.xpath ('// * [@ id = "ctl00_headSection"] / title/ text () '). extract () [' \ r \ n \ tSeattle Data Parcel \ r \ n ']

Но когда я запрашиваю что-либо в теле, яполучить пустой список:

response.xpath ('/ body'). extract () []

WЧто бы я хотел видеть в своем коде scrapy, ответ будет следующим:

base_zone: "SF 5000"

use: "Duplex"

1 Ответ

1 голос
/ 01 октября 2019

Если вы удалите tbody из своего XPATH, он будет работать

Поскольку инструменты разработчика работают с DOM в реальном времени в браузере, то, что вы на самом деле увидите, проверяя исходный код страницы, не является оригинальным HTML, но модифицированный после применения некоторого браузера очистить и выполнить код Javascript. В частности, Firefox известен добавлением элементов в таблицы. Scrapy, с другой стороны, не изменяет исходный HTML-код страницы, поэтому вы не сможете извлечь какие-либо данные, если будете использовать их в выражениях XPath.

Источник: https://docs.scrapy.org/en/latest/topics/developer-tools.html#caveats-with-inspecting-the-live-browser-dom

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...