Ich muss zum nächsten URL - Link (jede Seite hat etwa 20 Zeilen, die ich extrahieren muss, gefolgt von denen die gleiche muss die nächste Reihe von Ergebnissen aus der hinzugefügt werden folgenden URLs).Kann nicht mehrere Seiten durchlaufen, um Daten zu scratzen
Es gibt ungefähr 360 URLs und ich möchte Daten extrahieren, indem ich alle durchlaufe. Mein Code ist unten. Ich möchte sie später in eine CSV-Datei schreiben. Irgendwelche Vorschläge würden sehr geschätzt werden, da ich Python neu bin.
from urlparse import urljoin
import requests
from bs4 import BeautifulSoup
import csv
base_url = 'http://cricket.inhs.uiuc.edu/edwipweb/FMPro?-db=nvpassoc.fp5&-format=nvp_search_results.htm&-lay=web%20form&-max=20&-findall='
list_of_rows = []
next_page = 'http://cricket.inhs.uiuc.edu/edwipweb/FMPro?-db=nvpassoc.fp5&-format=nvp_search_results.htm&-lay=web%20form&-max=20&-skip=20&-findall='
while True:
soup = BeautifulSoup(requests.get(next_page).content)
soup.findAll('table')[1].findAll('tr')
for row in soup.findAll('table')[1].findAll('tr'):
list_of_cells = []
for cell in row.findAll('p'):
text = cell.text.replace(' ','')
list_of_cells.append(text)
list_of_rows.append(list_of_cells)
try:
next_page = urljoin(base_url, soup.select('/FMPro?-db=nvpassoc.fp5&-format=nvp_search_results.htm&-lay=web%20form&-max=20&-skip=20&-findall=')[1].get('href'))
except IndexError:
break
print list_of_rows
outfile = open("./trialpage.csv","wb")
writer = csv.writer(outfile)
writer.writerows(list_of_rows)
Sie müssen Ihren Versuchs-/ausgenommenblock innerhalb Ihrer while-Schleife setzen. Sie müssen auch die next_page jedes Mal aktualisieren, wenn Sie die max ändern und die Werte überspringen –
Sie befindet sich innerhalb der while-Schleife. Das Problem, das ich habe, ist, dass es nur die ersten 20 Zeilen auf einer Seite druckt und nicht auf die nächste Webseite geht. –
Es ist nicht in Ihrer While-Schleife. Bewege es unter die for-Schleife –