2016-05-01 26 views
0

Ich bin für den Moment mit meinem Web-Crawler stecken geblieben. Der Code, bis jetzt ist:Flexible Web Crawler

import requests 
from bs4 import BeautifulSoup 

def search_spider(max_pages): 
    page = 1 
    while page <= max_pages: 
     url = 'https://www.thenewboston.com/search.php?type=1&sort=pop&page=' + str(page) 
     source_code = requests.get(url) 
     plain_text = source_code.text 
     soup = BeautifulSoup(plain_text, "html.parser") 
     for link in soup.findAll('a', {'class': 'user-name'}): 
      href = "https://www.thenewboston.com/" + link.get('href') 
      print(href) 
search_spider() 

Dies ist ein Beispiel von einem YT-Tutorial. Wer weiß, wie ich den Code ändern muss, wenn ich keine Website-Endungen wie 1,2,3 habe ... aber verschiedene Nummern wie 021587, 0874519, NI875121? Die Domäne der anker Website ist immer die gleiche, aber die Endung ist nicht direkt wie in diesem Beispiel. Also was ich wissen müsste ist, wie man eine Variable für str (Seite), die die Endung der Website entweder aus einer .txt-Datei auf meinem Computer (ein paar hundert) oder aus einer Liste, wenn ich sie kopiere und in meine einfügen Code? Sicherlich sollte Python aufhören, wenn das Ende der Liste erreicht ist.

Wie ich zu Python weiß, weiß ich nicht, wie man dieses Problem im Moment löst. Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen. Schätze deine Antworten!

Flo

Antwort

0

Nun, wenn Sie eine Liste von Seiten, die Sie eher als eine Reihe von Zahlen besuchen möchten, können Sie so etwas wie tun könnten:

pages = ['021587', '0874519', 'NI875121'] 

for page in pages: 
    url = 'http://example.com/some-path/' + str(page) 

aus einer Datei zu lesen:

with open('filename.txt') as f: 
    contents = f.read() 

Unter der Annahme, dass Ihre Seiten durch Leerzeichen getrennt sind, können Sie dann laufen

pages = contents.split() 

Schauen Sie sich die documentation for str.split()

+0

Super funktioniert es perfekt! Vielen Dank! Eine weitere Frage: Ist es auch möglich, dass str (Seiten) auf ein .txt-Dokument verweisen, wie ich oben erwähnt habe? Das wäre einfacher, wenn ich meine Website-Suche erweitern möchte, anstatt Hunderte von Webseitenendungen in meinen Code zu kopieren. –

+0

Entschuldigung für die wirklich späte Antwort. Du hast es wahrscheinlich schon herausgefunden, aber ich habe meine Antwort nur für den Fall bearbeitet. –

+0

Wie du dachtest, ich habe es schon herausgefunden. Aber wie auch immer, danke für die Bearbeitung Ihrer Antwort, könnte für andere Benutzer interessant sein. –