Skip to content

Commit

Permalink
Update scraper.rb
Browse files Browse the repository at this point in the history
  • Loading branch information
BfB-Schenefeld committed Apr 21, 2024
1 parent 00e93bc commit 72ce531
Showing 1 changed file with 15 additions and 27 deletions.
42 changes: 15 additions & 27 deletions scraper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,61 +27,49 @@
require 'nokogiri'
require 'csv'

# Function to scrape details from each event page
# Scrape Details von jeder Sitzungswebseite (Ebene 2)
def scrape_event_details(event_url)
puts "Accessing event page: #{event_url}"
puts "Zugriff auf Sitzungsseite: #{event_url}"
document = Nokogiri::HTML(open(event_url))

event_data = []
document.css('tr').each do |row|
index_number = row.css('td.tonr a').text.strip
betreff_link = row.css('td.tobetreff div a').first
betreff_text = if betreff_link
betreff_link.text.strip
else
row.css('td.tobetreff div').text.strip
end
betreff = row.css('td.tobetreff div a').text.strip
vorlage_link = row.at_css('td.tovonr a')
vorlage_text = vorlage_link ? vorlage_link.text.strip : "-"
vorlage_url = vorlage_link ? "https://www.sitzungsdienst-schenefeld.de/bi/#{vorlage_link['href']}" : nil
vorlage_url = vorlage_link ? "https://www.sitzungsdienst-schenefeld.de/bi/#{vorlage_link['href']}" : "Keine Vorlage"
vorlage_text = vorlage_link ? vorlage_link.text.strip : "Keine Vorlage"

# Speichere Daten nur, wenn 'index_number' und 'betreff_text' nicht leer sind
if !index_number.empty? && !betreff_text.empty?
data_entry = [index_number, betreff_text, vorlage_text]
data_entry << vorlage_url if vorlage_url # Füge die Vorlagen-URL nur hinzu, wenn sie vorhanden ist
event_data << data_entry
output_text = "Found: #{index_number}, Betreff: #{betreff_text}, Vorlage: #{vorlage_text}"
output_text += ", Vorlage URL: #{vorlage_url}" if vorlage_url
puts output_text
# Daten speichern, wenn sinnvoller Inhalt vorhanden ist
if !index_number.empty? && !betreff.empty?
event_data << [index_number, betreff, vorlage_text, vorlage_url]
puts "Gefunden: #{index_number}, Betreff: #{betreff}, Vorlage: #{vorlage_text}, Vorlage URL: #{vorlage_url}"
end
end
return event_data
end

# Function to iterate over calendar data and fetch event details
# Scrape Kalender-Daten inklusive aller Sitzungen (Ebene 1)
def scrape_calendar_data(year, month)
url = "https://www.sitzungsdienst-schenefeld.de/bi/si010_r.asp?MM=#{month}&YY=#{year}"
puts "Attempting to access URL: #{url}"
puts "Zugriff auf Kalenderseite: #{url}"
document = Nokogiri::HTML(open(url))
event_links = document.css('a[href*="to010_r.asp?SILFDNR="]').map { |link| "https://www.sitzungsdienst-schenefeld.de/bi/#{link['href']}" }

all_event_data = []
event_links.each do |link|
all_event_data += scrape_event_details(link)
all_event_data += scrape_event_details(link) # Details von jeder Sitzungsseite scrapen
end
save_to_csv(all_event_data)
end

# Function to save data to CSV
# Daten in CSV speichern (Daten speichern)
def save_to_csv(data)
CSV.open("event_details.csv", "wb") do |csv|
headers = ["Index Number", "Betreff", "Vorlage Text"]
headers << "Vorlage URL" if data.any? { |row| row.length > 3 } # Füge die URL-Spalte hinzu, wenn URLs vorhanden sind
csv << headers
csv << ["Index Number", "Betreff", "Vorlage Text", "Vorlage URL"]
data.each { |row| csv << row }
end
end

# Start scraping
# Start des Scrapings (Scraping starten)
scrape_calendar_data(2024, 3)

0 comments on commit 72ce531

Please sign in to comment.