Ich möchte mit Python und BeautifulSoup4 mehrere Seiten einer Website durchblättern. Die Seiten unterscheiden sich nur durch eine einzige Nummer in der URL, so konnte ich tatsächlich eine Erklärung wie diese machen:Mehrere Seiten mit BeautifulSoup verschaben
Und mein Python-Skript ist this:
theurl = "beginningofurl/" + str(counter) + "/endofurl.html"
Der Link, den ich mit diesem ist die Prüfung habe .
import urllib
import urllib.request
from bs4 import BeautifulSoup
def category_crawler():
''' This function will crawl through an entire category, regardless how many pages it consists of. '''
pager = 1
while pager < 11:
theurl = "http://www.worldofquotes.com/topic/Nature/"+str(pager)+"/index.html"
thepage = urllib.request.urlopen(theurl)
soup = BeautifulSoup(thepage, "html.parser")
for link in soup.findAll('blockquote'):
sanitized = link.find('p').text.strip()
spantext = link.find('a')
writer = spantext.find('span').text
print(sanitized)
print(writer)
print('---------------------------------------------------------')
pager += 1
category_crawler()
Die Frage ist also: Wie kann die hartcodierte Nummer in der while-Schleife in eine Lösung ändern, dass das Skript automatisch erkennen lässt, dass es die letzte Seite übergeben, und dann verlässt es automatisch?
Woher bekommen Sie die Anzahl der Seiten? Kennst du es vorher? – alecxe
Ich könnte natürlich nachsehen, aber da ich das Skript verwenden möchte, um viele verschiedene Kategorien auf derselben Seite zu scrappen, wo es in jeder Kategorie eine andere Seitenzahl gibt, möchte ich, dass das Skript die letzte findet Seite selbst. –
Okay, was passiert, wenn der Zähler auf eine nicht existierende Seite zeigt? Würde die Seite mit 404 antworten? – alecxe