2017-07-26 18 views
0

私はこの時点でうまく動作しているそのWebページで利用可能な次のページリンクを掻き集めるために、Pythonでいくつかのスクリプトを書いています。このスクレーパーの唯一の問題は、重複リンクを振り払うことができないことです。誰かがこれを達成するのを助けてくれることを願っています。私が試してみた:重複したリンクが解析されないようにする方法を教えてください。

import requests 
from lxml import html 

page_link = "https://yts.ag/browse-movies" 

def nextpage_links(main_link): 
    response = requests.get(main_link).text 
    tree = html.fromstring(response) 
    for item in tree.cssselect('ul.tsc_pagination a'): 
     if "page" in item.attrib["href"]: 
      print(item.attrib["href"]) 

nextpage_links(page_link) 

これは私が得ているものの部分画像である:目的のために設定を使用でき

enter image description here

+1

あなたはセットを作成し、処理されたすべてのリンクを追加し、処理前にそのリンクがすでにそこにあるかどうかを確認します。 –

答えて

1

を:

import requests 
from lxml import html 

page_link = "https://yts.ag/browse-movies" 

def nextpage_links(main_link): 
    links = set() 
    response = requests.get(main_link).text 
    tree = html.fromstring(response) 
    for item in tree.cssselect('ul.tsc_pagination a'): 
     if "page" in item.attrib["href"]: 
      links.add(item.attrib["href"]) 

    return links 

nextpage_links(page_link) 

あなたはデフォルトでは重複を制限するscrapyを使用することもできます。

+0

あなたの答えは、Sumit Guptaに感謝します。できます。スクリプトからprintステートメントを取り出してください。 Btw、アイテムパイプラインが適切に処理されている場合、scrapyは重複を処理します。 – SIM

+0

ありがとう、 'print'ステートメントを削除しました:) –

関連する問題