2015-01-03 28 views
12

私はスクレイピーに新しいです。私はイケアのウェブサイトのウェブページをスクラップしようとしています。場所のリストが与えられたhereの基本ページ。スクリーニング:リンクとテキストを抽出する

マイ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 

[[{"link": [], "name": []} 

私が探していた出力場所やリンクの名前です:JSONファイルの出力は次のようなものがあります。私は何も得ていない。 どこが間違っていますか?

+1

あなたはallowed_domainsとして "ikea.com" を試してみましたか? – aberna

+0

@abernaどのような違いがありますか?私はできるだけ早くそれを試し、違いはありません。出力はありません。 –

+0

ドキュメント(http://doc.scrapy.org/en/latest/topics/spiders.html) – aberna

答えて

9

アイテムフィールドのxpath式の中に単純な間違いがあります。ループはすでにaタグを処理していますので、内側のxpath式にaを指定する必要はありません。つまり、現在タグをaタグ内のtd内にあるtr内に検索しています。明らかに何にもなりません。

a/text()text()a/@href@hrefと置き換えます。

(テスト - 私の作品)

+0

これがなぜ機能するのか、私が試していることを説明してください。 基本的に私はどこでどのように間違っていたのかを知りたい。答えをありがとう。できます。 :) –

+0

@PrakharMohanSrivastavaが答えを更新しました。申し訳ありませんが、私は物事を説明することに本当に良いです:) – alecxe

+0

ありがとう。わかった。どうもありがとう。 –

1

使用この....

item['name'] = sel.xpath('//a/text()').extract() 
    item['link'] = sel.xpath('//a/@href').extract() 
+2

これを使用して、これは説明の中で言うと貧弱なものになる傾向があります – Drew

+1

ありがとう、私はこれらの種類の説明があなたに行くと思います。 – Ganesh

+2

その意味が不明です。良い答えでポイントを得るのを手伝っている。 – Drew

関連する問題