mehrer URLs mit urllib.request.urlopen ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pythty
User
Beiträge: 4
Registriert: Dienstag 21. Februar 2017, 18:54

Hallo ich hab ein kleines Problem mit meinem kleinen Crawler

ich habe mittel BeautifulSoup auf einer Webseite eine Seitenanzahl ermittelt,
so das ich jetzt als ausgabe eine Liste mit den URL habe also

http://www.domain.de/verzeich/seite2
http://www.domain.de/verzeich/seite3
http://www.domain.de/verzeich/seite4

ect.

Code: Alles auswählen

    sort = "&show=32&sort=alphabetical"
    url = "http://www.domain.de/verzeich" + sort

    r = requests.get(url)
    soup = BeautifulSoup(r.content)

    seitenanzahlFinder = soup.find_all("a", {"class": "search_nav"})
    for item in seitenanzahlFinder:
        seitenanzahl = (item.text)
    seitenanzahl = int(item.text)
    
    urlListe = []
    for j in range(seitenanzahl, 1, -1):        
        UrlNum=(str(j))
        URL="http://www.domain.de/verzeich/seite"
        allurl = URL + UrlNum + sort
        urlListe.append(allurl)
    print(urlListe)

das ganze möchte ich jetzt weite verarbeiten und mit jeder URL druchwechseln

Code: Alles auswählen

    sauce = urllib.request.urlopen(urlListe).read()
    soup = bs.BeautifulSoup(sauce,'lxml')

    img = soup.find_all('div', {'class': 'img'})
    imgGet = str(img)
jetzt erhalte ich aber immer die Fehlermeldung:
AttributeError: 'list' object has no attribute 'timeout'
bekomme es irgendwie nicht hin und sehe den Wald vor lauter Code nicht mehr ???
Zuletzt geändert von Anonymous am Dienstag 21. Februar 2017, 19:34, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@Pythty: Du kannst `urlopen()` keine Liste mit URLs übergeben. Was soll denn da als Ergebnis kommen? Damit öffnet man *eine* URL. Warum überhaupt `urlopen()` wenn Du davor ja schon `requests()` verwendet hast?

Wenn Du mit jeder URL etwas machen willst, dann musst Du Code schreiben der das für eine URL macht, und den dann mit jeder URL ausführen. Dafür gibt's zum Beispiel ``for``-Schleifen.
Pythty
User
Beiträge: 4
Registriert: Dienstag 21. Februar 2017, 18:54

ah ok aber ich hab es
Antworten