簡體   English   中英

如何使用 BeautifulSoup 循環瀏覽網站?

[英]How to loop through website with BeautifulSoup?

我想循環瀏覽該站點並單擊list中的每個 book-element 。 這意味着對於這個例子,首先是:

  1. Leo Lausemaus 將 nicht teilen Pixi...
  2. Löcher - Die Geheimnisse von Green Lake
  3. ...

在 HTML 文件的標記部分是一個<a> ,這就是href將您帶到我想要 go 到第一個頁面: 在此處輸入圖像描述

使用 BeautifulSoup 我可以提取代碼中<a>所在的部分。

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')

這是代碼的結果:

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

之后,我想單擊list中的每個元素以訪問存儲在 href 屬性中的相應頁面。

這部分是我的問題。 我不知道如何從此list中訪問網頁。

您已接近目標,只需從您的<a>迭代您的列表和.get('href')以請求詳細信息頁面 - 為了方便起見,我使用css selectors到 select 每個項目並使用href屬性的值與基礎 url 連接:

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

抓取的內容作為dict存儲在list

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

例子

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轉換為DataFrame

import pandas as pd
pd.DataFrame(data)
標題 任何 作者/輸入 標題 國際標准書號 祖斯坦 出版社 格式 正天 格威特 奧爾特 使用權 厄斯基嫩 因帶 語言 備考 出版文本 斯蒂克沃特 Bestell-Nr。 斯巴達 安格博特 生活時間
0 Leo Lausemaus 將取消 teilen Pixi Buch Nr。 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus – Buch gebraucht kaufen 應該刮掉 Anna Casalis (Originaltext), Marco Campanella (Illustrationen) Leo Lausemaus 將取消 teilen Pixi Buch Nr。 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus 9783551050519 (ISBN-10: 3551050511) 維新 卡爾森出版社 10 x 10 厘米 24 20 克 漢堡 2. 2014年 c2013 塔申布赫 德語 Leo Lausemaus 將取消 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 minimumen Gebrauchsspuren, minimum angestoßen, keine Einträge, schneller Versand nach Zahlungseingang! Neun Jahre währt nun der Siegeszug von Leo Lausemaus 在 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
1 Löcher - Die Geheimnisse von Green Lake – Buch gebraucht kaufen 應該刮掉 路易斯·薩查爾 Löcher - Die Geheimnisse von Green Lake 9783407740984 (ISBN-10: 3407740980) 維新 Julius Beltz GmbH & Co. KG 187x125x17 毫米 296 295 克 塔申布赫 德語 Tierfreier Nichtraucher-Haushalt Schon der Anfang ist unglaublich: Stanley Yelnats geht ahnend unter einer Brücke durch, als ihm die riesigen, übel riechenden Turnschuhe eines berühmten Baseballspielers auf den Kopf 倒下。 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。 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
2 Die Wanderhure – Buch gebraucht kaufen 應該刮掉 伊尼洛倫茲 流浪者 3426629348 (ISBN-13: 9783426629345) 萊希特Gebrauchsspuren 克瑙爾·塔申布赫 190x125x39 毫米 624 452 克 2005年 塔申布赫 德語 Das Buch ist in einem guten Zusand 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。 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

它們是網頁的超鏈接,不包含任何可點擊的按鈕,這意味着它們不可點擊。 您可以遍歷列表鏈接,然后可以從每個列表 url 中提取所需的數據。

例子:

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

完整示例如何從每個詳細信息頁面中提取數據

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 €

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM