2017-06-06 10 views
0

justdial.comをスクラップするためにscrapyを使用していますが、コードが機能していないようです。これを解決するのを手伝ってください。私はターミナルから "scrap crawl justdial -o items.csv -t csv"コマンドを実行します。Scrapyを使用したWebデータの掻き取り

from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.selector import HtmlXPathSelector 
from justdial_sample.items import JustdialSampleItem 

class MySpider(CrawlSpider): 
    name = "justdial" 
    allowed_domains = ["www.justdial.com"] 
    start_urls = ["https://www.justdial.com/"] 

    rules = (Rule (SgmlLinkExtractor(allow=("index\d00\.html", 
    ),restrict_xpaths=('//p[@id="nextpage"]',)) 
    , callback="parse_items", follow=True), 
    ) 

    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 
     titles = hxs.select("//p") 
     items = [] 
     for titles in titles: 
      item = JdItem() 
      item ["title"] = titles.select("a/text()").extract() 
      item ["link"] = titles.select("@/href").extract() 
      item.append(item) 
     return items 

これは私が使用したコードです。

+0

私の知る限りjustdialブロック離れてGoogleからの他のスクレイパーをsettings.pyのために、この行を追加する必要があります。それは[robots.txt'](https://us.justdial.com/robots.txt)ファイルに制限されているだけでなく、IPアドレスを許可しません。あなたはscrapの中で 'USER_AGENT'文字列で遊んでみるか、scrapy splashを使って試してみることができます。 –

答えて

0

出力ログを表示できる場合は、より簡単にお手伝いします。

通常、ブラウザなどのUser-Agentのように正しいヘッダーを追加する必要があります。あなたは火かき棒の中のすべてのヘッダーをチェックすることができ、あなたはスパイダーのヘッダーをチェックすることができます。

print response.request.headers 

UPDATE: あなたは

USER_AGENT = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/53.0' 
+0

画像を投稿するには10の評判が必要です。だから私はあなたにドライブリンクを提供しています。 –

+0

https://drive.google.com/file/d/0B10eUYMamUyocjNvYl81WXk5ZGs/view?usp=drivesdk –

+0

私はすでに行っています。それでも動作しません –