2015-01-03 7 views
12

मैं स्केपर के लिए नया हूं और मैं Ikea वेबसाइट वेबपृष्ठ को स्क्रैप करने की कोशिश कर रहा हूं। 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": []} 

जो आउटपुट मैं ढूंढ रहा हूं वह स्थान और लिंक का नाम है। मुझे कुछ नहीं मिल रहा है। मैं गलत कहां जा रहा हूं?

+1

आप की कोशिश की है allowed_domains "ikea.com" के रूप में? – aberna

+0

@aberna इससे क्या अंतर आएगा? मैं उस ASAP को कोशिश करूंगा और कोई फर्क नहीं पड़ता। उत्पादन नही। –

+0

यह प्रलेखन के रूप में स्केपर उदाहरण का पालन करेगा (http://doc.scrapy.org/en/latest/topics/spiders.html) – aberna

उत्तर

9

आइटम फ़ील्ड के लिए xpath अभिव्यक्तियों के अंदर एक साधारण गलती है। लूप पहले से ही a टैग पर जा रहा है, आपको आंतरिक xpath अभिव्यक्तियों में a निर्दिष्ट करने की आवश्यकता नहीं है। दूसरे शब्दों में, वर्तमान में आप a टैग a टैग td के अंदर tr के अंदर खोज रहे हैं। जो स्पष्ट रूप से कुछ भी नहीं परिणाम।

text() और @href साथ a/@href साथ a/text() बदलें।

(परीक्षण किया - मेरे लिए काम करता है)

+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

संबंधित मुद्दे