Почему скрап-печать \t\n\n там, где я ожидаю, что там будет текст?

Я новичок в области скрапа, но учусь. Я анализировал эту страницу. и пытаюсь соскрести адрес со страницы.

Я сделал это в оболочке Scrapy, поэтому я начну с:

scrapy shell https://www.marksandspencer.com/MSStoreDetailsView?storeId=10151&langId=-24&SAPStoreId=6952

Который работает отлично. Затем я пытаюсь разобрать адрес с:

response.xpath('//li[@class="address"]/text()').extract()

Но мой вывод следующий:

['\ n \ t \ t', '\ n \ t \ t \ n \ t \ t']

Почему я не могу видеть адрес, как он появляется на странице:

BELFAST ABBEY CENTER, 1 Олд Гленмаунт Роуд, Ньютонабби, Аббатство Ньютон, BT36 7DN

Как мне получить этот адрес? Я ценю всех, кто находит время, чтобы ответить.

1 ответ

Есть пара ошибок, как вы подходите к этой проблеме:

  1. Когда используешь scrapy shell, вы должны окружить URL с ""потому что терминал может интерпретировать его как несколько процессов из-за характера & внутри URL:

    scrapy shell "https://www.marksandspencer.com/MSStoreDetailsView?storeId=10151&langId=-24&SAPStoreId=6952"
    
  2. Ваш xpath неверен, потому что с /text() вы получаете текст этого конкретного тега, и это li на самом деле не содержит информацию, которую вы хотите. Тег, который включает этот текст, находится на дочерних элементах этого li чтобы вы могли использовать:

    response.xpath('//li[@class="address"]//text()').extract()
    

    или же

    response.xpath('//li[@class="address"]/p/text()').extract()
    
Другие вопросы по тегам