Scrapy: Извлечение ссылок и текста
Я новичок в scrapy, и я пытаюсь очистить веб-страницу веб-сайта Ikea. Основная страница со списком местоположений, указанными здесь.
Мой items.py файл приведен ниже:
import scrapy
class IkeaItem(scrapy.Item):
name = scrapy.Field()
link = scrapy.Field()
И паук приведен ниже:
import scrapy
from ikea.items import IkeaItem
class IkeaSpider(scrapy.Spider):
name = 'ikea'
allowed_domains = ['http://www.ikea.com/']
start_urls = ['http://www.ikea.com/']
def parse(self, response):
for sel in response.xpath('//tr/td/a'):
item = IkeaItem()
item['name'] = sel.xpath('a/text()').extract()
item['link'] = sel.xpath('a/@href').extract()
yield item
При запуске файла я не получаю никакого вывода. Выход json файла выглядит примерно так:
[[{"link": [], "name": []}
Результат, который я ищу, - это имя местоположения и ссылки. Я ничего не получаю.
Где я ошибаюсь?
Ответы
Ответ 1
В выражениях xpath для полей элемента есть простая ошибка. Цикл уже проходит теги a
, вам не нужно указывать a
во внутренних выражениях xpath. Другими словами, в настоящее время вы ищете теги a
внутри тегов a
внутри td
внутри tr
. Это, очевидно, ничего не значит.
Замените a/text()
на text()
и a/@href
на @href
.
(проверено - работает для меня)
Ответ 2
используйте это....
item['name'] = sel.xpath('//a/text()').extract()
item['link'] = sel.xpath('//a/@href').extract()