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": []}
вывод, который я ищу, - это имя местоположение и ссылку. Я ничего не получаю. Где я ошибаюсь?
2 ответов
существует простая ошибка внутри выражений xpath для полей элемента. Цикл уже проходит через a
теги, вам не нужно указывать a
во внутренних выражениях xpath. Другими словами, в настоящее время вы ищете a
теги внутри a
теги внутри td
внутри tr
. Что, очевидно, ни к чему не приводит.
заменить a/text()
С text()
и a/@href
С @href
.
(проверено - у меня работает)
использовать это....
item['name'] = sel.xpath('//a/text()').extract()
item['link'] = sel.xpath('//a/@href').extract()