Home > Software design >  How to loop through website with BeautifulSoup?
How to loop through website with BeautifulSoup?

Time:09-05

I want to loop through enter image description here

With BeautifulSoup I am able to extract that part of the code, where the <a> is.

from bs4 import BeautifulSoup
import requests
page = requests.get(https://www.booklooker.de/buecher-schnaeppchen)
souped = BeautifulSoup(page.content, "html.parser")
test = souped.find_all(class_="resultList_desc")  
for i in test:
    result = i.find('a')

Here is the result from the code:

<a href="/Bücher/Marco-Campanella-Illustrationen-Anna-Casalis-Originaltext Leo-Lausemaus-will-nicht-teilen-Pixi-Buch/id/A02A6DCY01ZZQ"><span  id="ID2365796060">Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus</span></a>
<a href="/Bücher/Louis-Sachar Löcher-Die-Geheimnisse-von-Green-Lake/id/A02Acf2901ZZJ"><span  id="ID2367131489">Löcher - Die Geheimnisse von Green Lake</span></a>
<a href="/Bücher/Iny-Lorentz Die-Wanderhure/id/A02Aaimc01ZZj"><span  id="ID2366667608">Die Wanderhure</span></a>
...

After that I want to click on each element in the list to get to the respective page that is stored in the href attribute.

This part is my problem. I don't know how to get to the wepages from this list.

CodePudding user response:

You are close to your goal, simply request with your found link again - I worked with css selectors for convenience here to select each item and used the value of href attribute concatinated with the base url:

for e in soup.select('[id^="article_"]'):
    soup_p = BeautifulSoup(requests.get('https://www.booklooker.de/' e.a.get('href')).text)
    

The scraped contents ar stored as dict in a list

    data.append({
        'title':soup_p.h1.text
    })

Example

from bs4 import BeautifulSoup
import requests

page = requests.get('https://www.booklooker.de/buecher-schnaeppchen')
soup = BeautifulSoup(page.content)

data = []
for e in soup.select('[id^="article_"]'):
    soup_p = BeautifulSoup(requests.get('https://www.booklooker.de/' e.a.get('href')).content)
    
    d = {
        'title':soup_p.h1.text,
        'whatever': 'should be scraped'
    }
    d.update(dict([x.strip() for x in row.text.split(':', 1)] for row in soup_p.select('table.articleDetails tr:not(:has(td[colspan]))')))
    data.append(d)
data

Output

[{'title': 'Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus – Buch gebraucht kaufen', 'whatever': 'should be scraped', 'Autor/in': 'Anna Casalis (Originaltext), Marco Campanella (Illustrationen)', 'Titel': 'Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus', 'ISBN': '9783551050519 (ISBN-10: 3551050511)', 'Zustand': 'wie neu', 'Verlag': 'Carlsen Verlag GmbH', 'Format': '10 x 10 cm', 'Seiten': '24', 'Gewicht': '20\xa0g', 'Ort': 'Hamburg', 'Auflage': '2. Auflage 2014', 'Erschienen': 'c2013', 'Einband': 'Taschenbuch', 'Sprache': 'Deutsch', 'Beschreibung': 'Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus, Carlsen Verlag GmbH c2013, 2. Auflage 2014, Minibuch, Originalfoto, sehr gut erhalten und fast wie neu mit minimalen Gebrauchsspuren, minimal angestoßen, keine Einträge, schneller Versand nach Zahlungseingang!', 'Verlagstext': 'Neun Jahre währt nun der Siegeszug von Leo Lausemaus in deutschen Kinderzimmern. Über eine Million Mal haben sich die Geschichten in dieser Zeit verkauft. Das Erfolgsgeheimnis: Leo Lausemaus greift die großen Themen des Kindergartenaltes auf und setzt sich dabei behutsam und liebevoll mit den typischen Konfliktsituationen auseinander.', 'Stichwörter': 'Ab 3 Jahren, Bilderbücher, Billige Bücher, Erste Bücher, Geschenke Kinder, Kinderbuch, Kindergeschichten, Minibuch, Pixie, Vorlesebuch', 'Bestell-Nr.': 'BN14133', 'Sparte': 'Bücher: Kinderbücher / Jugendbücher: Pixi-Bücher>> Mehr von diesem Verkäufer in dieser Sparte>> Mehr von diesem Verkäufer von diesem Autor>> Alle Sparten dieses Verkäufers'}, {'title': 'Löcher - Die Geheimnisse von Green Lake – Buch gebraucht kaufen', 'whatever': 'should be scraped', 'Autor/in': 'Louis Sachar', 'Titel': 'Löcher - Die Geheimnisse von Green Lake', 'ISBN': '9783407740984 (ISBN-10: 3407740980)', 'Zustand': 'wie neu', 'Verlag': 'Julius Beltz GmbH & Co. KG', 'Format': '187x125x17 mm', 'Seiten': '296', 'Gewicht': '295\xa0g', 'Einband': 'Taschenbuch', 'Sprache': 'Deutsch', 'Beschreibung': 'Tierfreier Nichtraucher-Haushalt Versand als Bücher-/Warensendung', 'Verlagstext': 'Schon der Anfang ist unglaublich: Stanley Yelnats geht nichts ahnend unter einer Brücke durch, als ihm die riesigen, übel riechenden Turnschuhe eines berühmten Baseballspielers auf den Kopf fallen. Und weil sein Vater an einem bahnbrechenden Recycling-Verfahren mit gebrauchten Turnschuhen arbeitet, hält Stanley die müffelnden Treter für ein Zeichen und nimmt sie mit. Pech, dass die Polizei schon nach dem Dieb sucht. Der Jugendrichter lässt Stanley die Wahl: Jugendgefängnis oder 18 Monate Camp Green Lake. Er entscheidet sich für das Camp. Die Hitze dort ist unerträglich, der Alltag hart, doch so schnell gibt Stanley nicht auf.', 'Angebot vom': '25.08.2022', 'Bestell-Nr.': 'BN0098', 'Sparte': 'Bücher: Kinderbücher / Jugendbücher: Jugendbuch allgemein>> Mehr von diesem Verkäufer in dieser Sparte>> Mehr von diesem Verkäufer von diesem Autor>> Alle Sparten dieses Verkäufers'},...]

data coverted to DataFrame:

import pandas as pd
pd.DataFrame(data)
title whatever Autor/in Titel ISBN Zustand Verlag Format Seiten Gewicht Ort Auflage Erschienen Einband Sprache Beschreibung Verlagstext Stichwörter Bestell-Nr. Sparte Angebot vom Lieferzeit
0 Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus – Buch gebraucht kaufen should be scraped Anna Casalis (Originaltext), Marco Campanella (Illustrationen) Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus 9783551050519 (ISBN-10: 3551050511) wie neu Carlsen Verlag GmbH 10 x 10 cm 24 20 g Hamburg 2. Auflage 2014 c2013 Taschenbuch Deutsch Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus, Carlsen Verlag GmbH c2013, 2. Auflage 2014, Minibuch, Originalfoto, sehr gut erhalten und fast wie neu mit minimalen Gebrauchsspuren, minimal angestoßen, keine Einträge, schneller Versand nach Zahlungseingang! Neun Jahre währt nun der Siegeszug von Leo Lausemaus in deutschen Kinderzimmern. Über eine Million Mal haben sich die Geschichten in dieser Zeit verkauft. Das Erfolgsgeheimnis: Leo Lausemaus greift die großen Themen des Kindergartenaltes auf und setzt sich dabei behutsam und liebevoll mit den typischen Konfliktsituationen auseinander. Ab 3 Jahren, Bilderbücher, Billige Bücher, Erste Bücher, Geschenke Kinder, Kinderbuch, Kindergeschichten, Minibuch, Pixie, Vorlesebuch BN14133 Bücher: Kinderbücher / Jugendbücher: Pixi-Bücher>> Mehr von diesem Verkäufer in dieser Sparte>> Mehr von diesem Verkäufer von diesem Autor>> Alle Sparten dieses Verkäufers nan nan
1 Löcher - Die Geheimnisse von Green Lake – Buch gebraucht kaufen should be scraped Louis Sachar Löcher - Die Geheimnisse von Green Lake 9783407740984 (ISBN-10: 3407740980) wie neu Julius Beltz GmbH & Co. KG 187x125x17 mm 296 295 g nan nan nan Taschenbuch Deutsch Tierfreier Nichtraucher-Haushalt Schon der Anfang ist unglaublich: Stanley Yelnats geht nichts ahnend unter einer Brücke durch, als ihm die riesigen, übel riechenden Turnschuhe eines berühmten Baseballspielers auf den Kopf fallen. Und weil sein Vater an einem bahnbrechenden Recycling-Verfahren mit gebrauchten Turnschuhen arbeitet, hält Stanley die müffelnden Treter für ein Zeichen und nimmt sie mit. Pech, dass die Polizei schon nach dem Dieb sucht. Der Jugendrichter lässt Stanley die Wahl: Jugendgefängnis oder 18 Monate Camp Green Lake. Er entscheidet sich für das Camp. Die Hitze dort ist unerträglich, der Alltag hart, doch so schnell gibt Stanley nicht auf. nan BN0098 Bücher: Kinderbücher / Jugendbücher: Jugendbuch allgemein>> Mehr von diesem Verkäufer in dieser Sparte>> Mehr von diesem Verkäufer von diesem Autor>> Alle Sparten dieses Verkäufers 25.08.2022 nan
2 Die Wanderhure – Buch gebraucht kaufen should be scraped Iny Lorentz Die Wanderhure 3426629348 (ISBN-13: 9783426629345) leichte Gebrauchsspuren Knaur Taschenbuch 190x125x39 mm 624 452 g nan nan 2005 Taschenbuch Deutsch Das Buch ist in einem guten Zustand und weist nur leichte Gebrauchsspuren auf. "Konstanz im Jahre 1410: Als Graf Ruppert um die Hand der schönen Bürgerstochter Marie anhält, kann ihr Vater der schönen Bürgerstochter Marie abhält, kann ihr Vater sein Glück kaum fassen. Er ahnt nicht, dass es dem adeligen Bewerber nur um das Vermögen seiner zukünftigen Frau geht und dass er dafür vor keinem Verbrechen zurückschreckt."Privatverkauf daher kein Rückgaberecht Eine Frau kämpft in der grausamen Welt des Mittelalters um ihr Glück. Konstanz im Jahre 1410: Als Graf Ruppert um die Hand der schönen Bürgerstochter Marie anhält, kann ihr Vater sein Glück kaum fassen. Er ahnt nicht, dass es dem adligen Bewerber nur um das Vermögen seiner künftigen Frau geht und dass er dafür vor keinem Verbrechen zurückscheut. Marie und ihr Vater werden Opfer einer gemeinen Intrige, die das Mädchen zur Stadt hinaustreibt. Um zu überleben, muss sie ihren Körper verkaufen. Aber Marie gibt nicht auf ... Alle Bände der historischen Bestseller-Reihe rund um Marie Adler von Iny Lorentz in chronologischer Reihenfolge:• Die Wanderhure• Die Kastellanin• Das Vermächtnis der Wanderhure• Die List der Wanderhure• Die Wanderhure und die Nonne• Die Wanderhure und der orientalische Arzt• Die Tochter der Wanderhure• Töchter der Sünde• Die Wanderhure und der orientalische Arzt Huren, Intrige, Konstanz, Marie Schärer, Marie Adler, Bürgerstochter, Ruppertus Splendidus, Grafensohn, Verdächtigung, Hübschlerin, Wanderschaft, Wanderhure, Konstanzer Konzil, Rache, Aufstand, Iny Lorentz Romane, historische Romane Mittelalter BN00214 Bücher: Romane / Erzählungen: Historische Romane>> Mehr von diesem Verkäufer in dieser Sparte>> Mehr von diesem Verkäufer von diesem Autor>> Alle Sparten dieses Verkäufers 21.08.2022 nan

CodePudding user response:

They are hyperlink of the webpage and didn't contain any button to click meaning they are not clickable. You can iterate over the listing links then you can extract the required data from each listing url.

Example:

import requests
from bs4 import BeautifulSoup

r = requests.get('https://www.booklooker.de/buecher-schnaeppchen')
soup = BeautifulSoup(r.text,'html.parser')

for e in soup.select('h2.unformated'):
    link = 'https://www.booklooker.de'   e.a.get('href')
    print(link)

Output:

https://www.booklooker.de/Bücher/Marco-Campanella-Illustrationen-Anna-Casalis-Originaltext Leo-Lausemaus-will-nicht-teilen-Pixi-Buch/id/A02A6DCY01ZZQ
https://www.booklooker.de/Bücher/Louis-Sachar Löcher-Die-Geheimnisse-von-Green-Lake/id/A02Acf2901ZZJ
https://www.booklooker.de/Bücher/Iny-Lorentz Die-Wanderhure/id/A02Aaimc01ZZj
https://www.booklooker.de/Bücher/Gotthold-Ephraim-Lessing Nathan-der-Weise-Ein-dramatisches-Gedicht-in-fünf-Aufzügen-Universal/id/A02zObF601ZZA
https://www.booklooker.de/Bücher/Jan-Weiler Maria-ihm-schmeckt-s-nicht/id/A02zQiC401ZZO
https://www.booklooker.de/Bücher/Iny-Lorentz Die-Kastellanin/id/A02A8iJu01ZZw
https://www.booklooker.de/Bücher/Eckart-von-Hirschhausen Die-Leber-wächst-mit-ihren-Aufgaben-Komisches-aus-der-Medizin/id/A02zP2LP01ZZr
https://www.booklooker.de/Bücher/Max-Frisch Andorra-Stück-in-zwölf-Bildern/id/A02zSuzY01ZZ5
https://www.booklooker.de/Bücher/Leonie-Swann Glennkill-Ein-Schafskrimi/id/A02zRfQq01ZZY
https://www.booklooker.de/Bücher/Dan-Brown Illuminati-Robert-Langdon-Bd-1/id/A02AabRs01ZZf
https://www.booklooker.de/Bücher/Iny-Lorentz Dezembersturm/id/A02A8iNL01ZZp
https://www.booklooker.de/Bücher/Dan-Brown Sakrileg-The-Da-Vinci-Code-Robert-Langdon-Bd-2/id/A02AabRA01ZZD     
https://www.booklooker.de/Bücher/Martha-Grimes Inspektor-Jury-bricht-das-Eis/id/A02A3Ahg01ZZb
https://www.booklooker.de/Bücher/Myron-Levoy Der-gelbe-Vogel/id/A02zG4NT01ZZC
https://www.booklooker.de/Bücher/Conni-in-den-Bergen/id/A02uQalZ01ZZF
https://www.booklooker.de/Bücher/Bullagra-zur-äußerlichen-Anwendung-200-000-DAX/id/A02rla6L01ZZ6     
https://www.booklooker.de/Bücher/Bullagra-zur-äußerlichen-Anwendung-200-000-DAX/id/A02rla1M01ZZ4     
https://www.booklooker.de/Bücher/Bullagra-zur-äußerlichen-Anwendung-200-000-DAX/id/A02rla0N01ZZ6     
https://www.booklooker.de/Bücher/Bullagra-zur-äußerlichen-Anwendung-200-000-DAX/id/A02rla3u01ZZe     
https://www.booklooker.de/Bücher/Tessa-Loo Die-Zwillinge/id/A02AejhD01ZZE

Full example how to extract data from each details page

import requests
from bs4 import BeautifulSoup

r = requests.get('https://www.booklooker.de/buecher-schnaeppchen')
soup = BeautifulSoup(r.text,'html.parser')

links = []
for e in soup.select('h2.unformated'):
    link = 'https://www.booklooker.de'   e.a.get('href')
    links.append(link)

for url in links:
    r = requests.get(url)
    soup = BeautifulSoup(r.text,'html.parser')
    price = soup.select_one('.priceValue')
    print(price.get_text(strip=True).replace(',','.') if price else None)

Output:

0.95 €
0.50 €
0.25 €
0.25 €
0.25 €
0.25 €
0.50 €
0.45 €
0.25 €
0.50 €
0.25 €
0.50 €
0.30 €
0.55 €
0.45 €
0.49 €
0.49 €
0.49 €
0.49 €
0.25 €
  • Related