2017-06-15 10 views
4

のURL:Scrapyが重複したURLなどのユニークなURLのフィルタリングされ

  1. http://www.extrastores.com/en-sa/products/mobiles/smartphones-99500240157?page=1
  2. http://www.extrastores.com/en-sa/products/mobiles/smartphones-99500240157?page=2ユニークですが、scrapyはそれらをこする重複としてこれらのURLをフィルタリングしていません。

    rules = (
        Rule(LinkExtractor(restrict_css=('.resultspagenum'))), 
        Rule(LinkExtractor(allow=('\/mobiles\/smartphones\/[a-zA-Z0-9_.-]*',),), callback='parse_product'), 
    )` 
    

    私はこの動作を理解していない、誰かがしてください説明することができます?私は、これらのルールでCrawlSpiderを使用していますenter image description here

同じコードが先週働いていた。 Scrapyバージョン1.3.0を使用

+1

あなたはまだ訪問していないと確信していますか? – Fabricator

+0

はい、何もウェブサイト全体から廃止されていません。すべてのリンクがフィルタリングされています。 – javed

+0

はリンクが壊れている可能性がありますが、ページ上に何もデータがありませんか? – Verz1Lka

答えて

3

@paul trmbrthの提案に続いて、私はコードとスクラップされたウェブサイトを再確認しました。 Scrapyは以前にダウンロードされたリンクをダウンロードし、リンクをフィルタリングしています。問題は、HTMLの 'タグ内のリンク属性は、いくつかのjavascript関数への静的リンクから変更した:これは彼ではなかった

def _process_value(value): 
    m = re.search('javascript:gtm.traceProductClick\("(.*?)"', value) 
    if m: 
     return m.group(1) 


rules = (
    Rule(LinkExtractor(restrict_css=('.resultspagenum'))), 
    Rule(LinkExtractor(
     allow=('\/mobiles\/smartphones\/[a-zA-Z0-9_.-]*',), 
     process_value=_process_value 
    ), callback='parse_product'), 
) 

<a href='javascript:gtm.traceProductClick("/en-sa/mobiles/smartphones/samsung-galaxy-s7-32gb-dual-sim-lte-gold-188024"> 

は、それに対応して、私はと私のクモのコードを変更しました非ユニークなURLをフィルタリングするという問題がありましたが、最近のリンクが変更され、コードが壊れていたため、 'a'タグの 'href'属性からリンクを抽出していました。 もう一度@paul trmbrth

関連する問題