Я ищу публичный список волонтерских услуг в Европе: мне нужны не полные адреса, а название и веб-сайт. Я думаю о данных... XML, CSV... с такими полями: имя, страна - и еще какими-то полями, было бы неплохо по одной записи на страну присутствия. Кстати: европейские волонтерские службы — отличный вариант для молодежи.
Ну, я нашел отличную страницу, которая очень и очень информативна — см.
хотите собрать данные из европейских волонтерских служб, размещенных на европейском сайте:
https://youth.europa.eu/ go-abroad/volunteering/opportunities_en
У нас там есть несколько сотен возможностей для волонтерской деятельности, которые хранятся на таких сайтах:
Код: Выделить всё
https://youth.europa.eu/solidarity/placement/39020_en
https://youth.europa.eu/solidarity/placement/38993_en
https://youth.europa.eu/solidarity/placement/38973_en
https://youth.europa.eu/solidarity/placement/38972_en
https://youth.europa.eu/solidarity/placement/38850_en
https://youth.europa.eu/solidarity/placement/38633_en
Я думаю, было бы здорово собрать данные, то есть с помощью парсера, основанного на BS4 и запросы – анализ данных и последующая печать данных в кадре данных
Ну – я думаю, что мы могли бы перебрать все URL-адреса :
Код: Выделить всё
placement/39020_en
placement/38993_en
placement/38973_en
placement/38850_en
На данный момент я думаю, что это базовый подход к начните с этого:
Код: Выделить всё
import requests
from bs4 import BeautifulSoup
import pandas as pd
# List of URLs to scrape
urls = [
"https://youth.europa.eu/solidarity/placement/39020_en",
"https://youth.europa.eu/solidarity/placement/38993_en",
"https://youth.europa.eu/solidarity/placement/38973_en",
"https://youth.europa.eu/solidarity/placement/38972_en",
"https://youth.europa.eu/solidarity/placement/38850_en",
"https://youth.europa.eu/solidarity/placement/38633_en"
]
# Function to scrape data from a single URL
def scrape_data(url):
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# Extracting relevant data
title = soup.find("h2").text.strip()
location = soup.find("span", class_="field--name-field-placement-location").text.strip()
start_date = soup.find("span", class_="field--name-field-placement-start-date").text.strip()
end_date = soup.find("span", class_="field--name-field-placement-end-date").text.strip()
# Returning data as dictionary
return {
"Title": title,
"Location": location,
"Start Date": start_date,
"End Date": end_date,
"URL": url
}
# Scrape data from all URLs
data = []
for url in urls:
data.append(scrape_data(url))
# Convert data to DataFrame
df = pd.DataFrame(data)
# Print DataFrame
print(df)
Код: Выделить всё
AttributeError Traceback (most recent call last)
in ()
36 data = []
37 for url in urls:
---> 38 data.append(scrape_data(url))
39
40 # Convert data to DataFrame
in scrape_data(url)
20 # Extracting relevant data
21 title = soup.find("h2").text.strip()
---> 22 location = soup.find("span", class_="field--name-field-placement-location").text.strip()
23 start_date = soup.find("span", class_="field--name-field-placement-start-date").text.strip()
24 end_date = soup.find("span", class_="field--name-field-placement-end-date").text.strip()
AttributeError: 'NoneType' object has no attribute 'text'
Источник: https://stackoverflow.com/questions/781 ... ces-a-tiny