Scrapy:提取链接和文本

Pra*_*ava 17 python scrapy web-scraping scrapy-spider

我是scrapy的新手,我正试图抓住宜家网站的网页.基本页面,其中包含此处给出的位置列表.

我的items.py文件如下:

import scrapy


class IkeaItem(scrapy.Item):

    name = scrapy.Field()
    link = scrapy.Field()
Run Code Online (Sandbox Code Playgroud)

蜘蛛给出如下:

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
Run Code Online (Sandbox Code Playgroud)

在运行文件时,我没有得到任何输出.json文件输出类似于:

[[{"link": [], "name": []}
Run Code Online (Sandbox Code Playgroud)

我要找的输出是位置名称和链接.我一无所获.我哪里错了?

ale*_*cxe 15

项目字段的xpath表达式中存在一个简单的错误.循环已经遍历a标记,您不需要a在内部xpath表达式中指定.换句话说,目前您正在搜索a的内部标签a里面的标签tdtr.这显然导致什么都没有.

更换a/text()text()a/@href@href.

(测试 - 适合我)


Gan*_*esh 5

用这个....

    item['name'] = sel.xpath('//a/text()').extract()
    item['link'] = sel.xpath('//a/@href').extract()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢提请,我认为这些善意的解释会让你受益。 (3认同)
  • 使用这个并尝试这在解释中往往是糟糕的事情 (2认同)
  • 不确定那是什么意思。试图通过好的答案帮助您获得积分。 (2认同)