Heim  >  Artikel  >  Backend-Entwicklung  >  Schöne Suppe, analysiert die Liste vieler Einträge und speichert sie im Datenrahmen

Schöne Suppe, analysiert die Liste vieler Einträge und speichert sie im Datenrahmen

WBOY
WBOYnach vorne
2024-02-10 08:48:03778Durchsuche

Schöne Suppe, analysiert die Liste vieler Einträge und speichert sie im Datenrahmen

Frageninhalt

Derzeit werde ich Daten von Diözesen auf der ganzen Welt sammeln.

Meine Methode funktioniert mit BS4 und Pandas. Ich arbeite derzeit an der Scraping-Logik.

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = "http://www.catholic-hierarchy.org/"

# Send a GET request to the website
response = requests.get(url)

#my approach  to parse the HTML content of the page
soup = BeautifulSoup(response.text, 'html.parser')

# Find the relevant elements containing diocese information
diocese_elements = soup.find_all("div", class_="diocesan")

# Initialize empty lists to store data
dioceses = []
addresses = []

# Extract now data from each diocese element
for diocese_element in diocese_elements:
    # Example: Extracting diocese name
    diocese_name = diocese_element.find("a").text.strip()
    dioceses.append(diocese_name)

    # Example: Extracting address
    address = diocese_element.find("div", class_="address").text.strip()
    addresses.append(address)

#  to save the whole data we create a DataFrame using pandas
data = {'Diocese': dioceses, 'Address': addresses}
df = pd.DataFrame(data)

# Display the DataFrame
print(df)

Aktuell habe ich etwas Seltsames auf meinem Pycharm entdeckt. Ich versuche einen Weg zu finden, alle Daten mithilfe der Pandas-Methoden zu sammeln.


Richtige Antwort


Dieses Beispiel wird Ihnen den Einstieg erleichtern – es analysiert alle Gemeindeseiten, um den Gemeindenamen + die URL zu erhalten und sie in einem Datenrahmen in Panda zu speichern.

Sie können diese URLs dann durchlaufen und weitere Informationen erhalten, die Sie benötigen.

import pandas as pd
import requests
from bs4 import beautifulsoup

chars = "abcdefghijklmnopqrstuvwxyz"
url = "http://www.catholic-hierarchy.org/diocese/la{char}.html"

all_data = []
for char in chars:
    u = url.format(char=char)

    while true:
        print(f"parsing {u}")
        soup = beautifulsoup(requests.get(u).content, "html.parser")
        for a in soup.select("li a[href^=d]"):
            all_data.append(
                {
                    "name": a.text,
                    "url": "http://www.catholic-hierarchy.org/diocese/" + a["href"],
                }
            )

        next_page = soup.select_one('a:has(img[alt="[next page]"])')
        if not next_page:
            break

        u = "http://www.catholic-hierarchy.org/diocese/" + next_page["href"]

df = pd.dataframe(all_data).drop_duplicates()
print(df.head(10))

Drucken:

...
Parsing http://www.catholic-hierarchy.org/diocese/lax.html
Parsing http://www.catholic-hierarchy.org/diocese/lay.html
Parsing http://www.catholic-hierarchy.org/diocese/laz.html

               Name                                                   URL
0          Holy See  http://www.catholic-hierarchy.org/diocese/droma.html
1   Diocese of Rome  http://www.catholic-hierarchy.org/diocese/droma.html
2            Aachen  http://www.catholic-hierarchy.org/diocese/da549.html
3            Aachen  http://www.catholic-hierarchy.org/diocese/daach.html
4    Aarhus (Århus)  http://www.catholic-hierarchy.org/diocese/da566.html
5               Aba  http://www.catholic-hierarchy.org/diocese/dabaa.html
6        Abaetetuba  http://www.catholic-hierarchy.org/diocese/dabae.html
8         Abakaliki  http://www.catholic-hierarchy.org/diocese/dabak.html
9           Abancay  http://www.catholic-hierarchy.org/diocese/daban.html
10        Abaradira  http://www.catholic-hierarchy.org/diocese/d2a01.html

Das obige ist der detaillierte Inhalt vonSchöne Suppe, analysiert die Liste vieler Einträge und speichert sie im Datenrahmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen