Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Sup Cantik menghurai senarai banyak entri dan simpan dalam bingkai data

Sup Cantik menghurai senarai banyak entri dan simpan dalam bingkai data

WBOY
WBOYke hadapan
2024-02-10 08:48:03778semak imbas

Sup Cantik menghurai senarai banyak entri dan simpan dalam bingkai data

Kandungan soalan

Pada masa ini saya akan mengumpul data daripada keuskupan di seluruh dunia.

Kaedah saya berfungsi dengan bs4 dan panda. Saya sedang berusaha untuk mengikis 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)

Pada masa ini saya menemui sesuatu yang pelik pada pycharm saya. Saya cuba mencari cara untuk mengumpul semua data menggunakan kaedah pandas.


Jawapan Betul


Contoh ini akan membantu anda bermula - ia akan menghuraikan semua halaman paroki untuk mendapatkan nama paroki + url dan menyimpannya ke dalam bingkai data dalam panda.

Anda kemudian boleh mengulangi url ini dan mendapatkan lebih banyak maklumat yang anda perlukan.

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

Cetakan:

...
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

Atas ialah kandungan terperinci Sup Cantik menghurai senarai banyak entri dan simpan dalam bingkai data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam