2017-08-24 9 views
0

私はこのリンクを擦ってしまいますが、私はそれを成功させることはできません。私は間違いがないので、私の価値は空白になります。SplashでJSページをスクラップする方法は?

私はpythonのscrapyとスプラッシュを使用しています。どうしましたか ?誰でも助けてくれますか?

この私のクモコード:

# -*- coding: utf-8 -*- 
    import scrapy 
    from scrapy_splash import SplashRequest 
    from boom.items import BoomItem 
    from scrapy.selector import HtmlXPathSelector 


    class OrumcekSpider(scrapy.Spider): 
     name = 'orumcek' 
     start_urls = ['example.com'] 

def start_requests(self): 
    for url in self.start_urls: 
     yield SplashRequest(url=url, callback=self.parse, endpoint='render.html') 

def parse(self, response): 
     item = BoomItem() 
     item["BrandName"] = response.xpath("//*[@id='data-item']/div/a/span/text()").extract() 
     item["BrandSector"] = response.xpath("//*[@id='data-item']/div[3]/span/text()").extract() 

     return item 

答えて

0

ような何かにあなたのXPathを変更する必要があり、画像では私はあなたがセレクタをコピーする方法をお見せたりこのページののxpath

enter image description here

レンダリングはあなたが欲しいあなたの要素を見つけるまで、あなたは待つ必要があり、時間がかかります。

while not splash:select('.your-element') do 
    splash:wait(0.1) 
    end 
+0

あなたの答えをありがとうございます。私はあなたが言った方法を試してみるつもりです。 –

+0

@EmreAydınsoyレンダリングにスプラッシュやセレンを使用するとレンダリングに時間がかかるので – parik

+0

私はこのようなものは表示されませんでした。 –

0

は、私は、ページのソースでも、それを検査しながら、どちらも、ページ上のdata-itemに等しいidで任意の要素を見つけることができませんよ。しかし、属性の要素があります。data-itemです。だから、おそらくスプラッシュを使用してレンダリングに問題がない、あなただけのあなたはdata-itemを持っているが、それはidではありません

item["..."] = response.xpath("//*[@data-item]/...") 
+0

ありがとうございました。 –

+0

問題を解決するのに役立ちましたか? –

+0

いいえ、しかし私は新しい考え方を得ました^^ –

関連する問題