2017-07-26 1 views
0

Ich habe ein Skript in Python geschrieben, um die nächsten Links auf der Webseite zu scrappen, die in diesem Moment gut läuft. Das einzige Problem mit diesem Scraper ist, dass er doppelte Links nicht abschütteln kann. Hoffe jemand wird mir helfen dies zu erreichen. Ich habe versucht, mit:Wie Sie verhindern, dass doppelte Links analysiert werden?

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) 

Dies ist das Teilbild von dem, was ich bekomme:

enter image description here

+1

Sie erstellen ein Set, fügen alle verarbeiteten Links hinzu und prüfen, ob die Verknüpfung bereits vor der Verarbeitung vorhanden ist. –

Antwort

1

können Sie zum Zwecke Satz verwenden:

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) 

Sie kann auch scrapy verwenden, die standardmäßig Duplikate einschränken.

+0

Danke Sumit Gupta, für Ihre Antwort. Es klappt. Sie sollten die print-Anweisung aus Ihrem Skript entfernen. Btw, scrapy behandelt Duplikate, wenn die Pipeline richtig gehandhabt wird. – SIM

+0

Danke, die 'print' Anweisung entfernt :) –

Verwandte Themen