2017-11-11 16 views
0

を否定します。以下のような他の正規表現を試してみましたが、運はありません。scrapyは、私は次のようにローカライズされたURLを拒否しようとしているmはローカライズされたURLに

rules = (
    Rule(LinkExtractor(deny=(r'\/es\/*.*')), follow = True) 
) 

私は基本的に英語版のリソースにのみ興味があります。スペイン語版ではありません。URLに/es/があります。

スペイン語のURLをクロールしないようにするにはどうすればよいですか?

+0

ベストと簡単な方法は、mddlewareを使用して、任意のURLを無視することです'process_request'メソッドの内部 – Umair

+0

ミドルウェアのために定義された 'process_request'メソッドはありませんか? – DarthVader

+0

あなたが言ったことは分かりません。ダウンロードミドルウェアファイルを作成し、そのメソッドのprocess_requestの中にrequest.urlでURLにアクセスし、このURLをスクラップするか無視するかを決定します。 PS:process_requestは、URLがスクラップされる前に呼び出されます。 – Umair

答えて

0

この

class MySpider(scrapy.Spider): 
    name = "my_spider" 

    custom_settings = { 
     'DOWNLOADER_MIDDLEWARES': { 
      'project_root_path.MyMiddlewaresFile.MyMiddleware': 300, 

     } 
    } 


    def start_requests(self): 

     yield Request() 

とあなたのMyMiddlewaresFile.py

class MyMiddleware(object): 

    def process_request(self, request, spider): 
     if "/en/" in request.url: 
      pass #Do not do anything. 

     else: 
      #keep processing request 
      return request 

のようにあなたのクモであなたのミドルウェアを定義するには、ドキュメントを参照してください:https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#scrapy.downloadermiddlewares.DownloaderMiddleware.process_request

関連する問題