Seite 1 von 1

Webpage-Crawler mit BS

Verfasst: Donnerstag 3. Mai 2018, 21:50
von Xenobiologist
Hallo zusammen,

ich noch realtiv neu, was das Thema Python angeht. Kenn mich aber mit Programmierung/Skripten einigermaßen aus.
Ich würde gern für einen Kumpel versuchen mit Python den Spielplan einer Mannschaft von www.fussball.de auszulesen.
Allerdings weiß ich nicht genau, wie ich die Ajax-Calls absetzen muss, damit die relevanten Daten überhaupt auf die Seite kommen.

Auf der Seite http://www.fussball.de/mannschaft/sv-au ... 01VTR8C1K7#!/
scheint es nötig zu sein, erst Mannschaftsspielplan und dann Start und Endezeitraum auszuwählen, bevor man die Daten dann aus dem Quelltext ziehen kann.

Wäre nett, wenn jemand eine Idee hätte wie ich das machen muss.
Ziel ist es, den gesamten Saisionplan rauszuziehen.

Hier mein kläglicher erster Versuch :D

Code: Alles auswählen

from requests import get
from bs4 import BeautifulSoup
import re
import json

team_id = '011MIBM9IK000000VTVG0001VTR8C1K7'
#url = "http://www.fussball.de/mannschaft/sv-aue-liebenau-sv-aue-liebenau-niedersachsen/-/saison/01VSEGVU4K000000VS548984VU8N0U3U/team-id/{}#!/".format(team_id)
url = "http://www.fussball.de/mannschaft/sv-aue-liebenau-sv-aue-liebenau-niedersachsen/-/saison/01VSEGVU4K000000VS548984VU8N0U3U/team-id/011MIAMBA4000000VTVG0001VTR8C1K7#!/"

print('URL: ' + url)
response = get(url)  # Download team games page
print("Status: " + str(response.status_code))
#print("Status: " + str(response.text))

html = BeautifulSoup(response.content, "lxml")  # Parse
#print(html)
stats = html.find_all(class_='table-container fixtures-matches-table club-matchplan-table')
print(stats)
print("-------------------------------------")
dates = stats[0].find_all(class_="hidden-small inline")
print(dates)
So long,
Mega

Re: Webpage-Crawler mit BS

Verfasst: Samstag 5. Mai 2018, 19:56
von sls
Für dynamische Webinhalte würde ich dir Selenium empfehlen. Bei JS/AJAX basierten Webinhalten, kannst du diese via Selenium und Webdriver deiner Wahl (z.B. Firefox im headless-mode) parsen. Ich habe vor einiger Zeit immer phantomjs verwendet, allerdings ist die Unterstützung eingeschränkt da obsolet.

Mit Selenium kannst du die Seite dann auch Steuern, also bestimmte Events ausführen (z.B. einen Button klicken, Informationen eingeben usw.), den jeweiligen HTML-Response kannst du anschließend dann mit BS4 verarbeiten.

Re: Webpage-Crawler mit BS

Verfasst: Samstag 5. Mai 2018, 20:10
von Sirius3
@sls: man könnte auch einfach mal im Browser schauen, was da so an Anfragen gesendet werden.

Code: Alles auswählen

url = "http://www.fussball.de/ajax.team.matchplan/-/mime-type/JSON/mode/PAGE/prev-season-allowed/false/show-filter/false/team-id/011MIAMBA4000000VTVG0001VTR8C1K7/max/1000/datum-von/2017-10-22/datum-bis/2018-10-28/offset/0"

Re: Webpage-Crawler mit BS

Verfasst: Samstag 9. November 2019, 12:03
von tituzzz
@Sirius3

Ich bin totaler Anfänger und versuche etwas ähnliches mit Kotlin hinzubekommen. Dafür benötige ich am besten json Daten und bin auf deinen Beitrag gestoßen.

Kannst du mir vielleicht erklären, wie man über den Browser an deine URL kommt?

VG