2016-05-13 12 views
1

テキストが表示されないのはなぜですか?私はこのスクリプトを多くのウェブサイトで使用してきましたが、この問題は一度も起こりませんでした。テキストが表示されないPython

import scrapy.selector 
from scrapy.spiders import CrawlSpider, Rule 
from scrapy.linkextractors import LinkExtractor 
from Prijsvergelijking_Final.items import PrijsvergelijkingFinalItem 

vendors = [] 
for line in open("vendors.txt", "r"): 
    vendors.append(line.strip("\n\-")) 
e = {} 
for vendor in vendors: 
    e[vendor] = True 

class ArtcrafttvSpider(CrawlSpider): 
    name = "ARTCRAFTTV" 
    allowed_domains = ["artencraft.be"] 
    start_urls = ["https://www.artencraft.be/nl/beeld-en-geluid/televisie"] 
    rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('//li[@class="next"]',)), callback = "parse_start_url",follow = True),)  
    def parse_start_url(self, response): 
     products = response.xpath("//ul[@class='product-overview list']/li") 
     for product in products: 
      item = PrijsvergelijkingFinalItem() 
      item["Product_a"] = product.xpath(".//a/span/h3/text()").extract_first().strip().replace("-","") 
      item["Product_price"] = product.xpath(".//a/h4/text()").extract_first() 
      for word in item['Product_a'].split(" "): 
       if word in e: 
        item['item_vendor'] = word    
      yield item 

ウェブサイトコード:スクリプトが実行された後

HTML

結果:

Results

任意の提案を、私はこの問題を解決することができますか?

+0

を与えるだろう//aタグの子でありますか? – Tony

+0

はい、私は価格について話します – Wouter

+0

@Wouter: '.// a/h4 /(/ text())[last()]'のような価格で別のXPathを試してみてください。 – Blender

答えて

1

短い答えは次のようになります。

あなたが価格フィールド値の間違ったのxpath

詳細を持っている:

は常に何があなたの上に表示されるように、そのページの構造が同じであると仮定しないでください画面。それはinspect element(Firefoxの)//a/h4タグの子として価格値を示していますが、ダウンロードされたページのソースを分析する場合、あなたはその価格の値が表示されますことを私は見何らかの理由で常に

WYSIWYGではありませんページ上に存在するが、それは//a/h4タグの子ではありませんが、それはそう//a/text()はあなたが価格の話を希望する値

0

価格はJavascriptなどから読み込まれているようですが、私がPythonからページをプルダウンするとどこにも価格がありません。

ここでは2つの可能性があります:まず、価格がJavascriptで読み込まれている可能性があります。その場合、私はこの回答を見ることをお勧めします:https://stackoverflow.com/a/26440563/629110とライブラリdryscape

ユーザーエージェントのために価格がブロックされている場合は、ユーザーエージェントを実際のブラウザに変更することができます:https://stackoverflow.com/a/10606260/629110

最初に(より簡単なので)ユーザーエージェントを試してください。

関連する問題