String-Suche, URL folgen, Datei downloaden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
peacepipe
User
Beiträge: 5
Registriert: Mittwoch 1. November 2017, 16:05

Hallo Community,

auf einer Webseite wird wöchentlich zu einer bestimmten Zeit eine neue Datei hochgeladen. Die direkte download-URL ist nur über Umwege zu ermitteln, da PHP code die URL anonymisiert.
Um die Download-URL zu ermitteln sind mehrere Schritte notwendig, welche später automatisiert per Script ausgeführt werden sollen:

z.B. http://site.com/liste

Hier findet man im Quellcode etwas wie:

Code: Alles auswählen

<tr class="mediaitem" onclick="window.location.href = '/datei/20'">      #Die Zahl wird wöchentlich hochgezählt
Daraus müsste man sich nun eine neue URL zusammenbauen:
http://site.com/liste/20

Von hier aus erreicht man die nächste Seite mit einem iFrame:

Code: Alles auswählen

<div align="center"><div id="embed">
<iframe width="735" height="414" src="http://www.nocheineseite.com/bla.html" frameborder="0" scrolling="no" allowfullscreen></iframe>
</div>
Und zu guter Letzt findet man die Datei:
file: 'https://bliblablu,com/video.mp4',

Diese soll heruntergeladen und umbenannt werden: <File>_Nummer.mp4


Das mehrfache browsing macht mir genauso zu schaffen wie das suchen der Strings.


Hier ist mein erster Ansatz, damit finde ich erstmal nur die Strings innerhalb der <tr></tr> HTML tags :

Code: Alles auswählen

from BeautifulSoup import BeautifulSoup

import urllib2
import re

from urllib import FancyURLopener


class MyOpener(FancyURLopener):
    version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'

mopen = MyOpener()

def getLinks(url):
	pageFile = mopen.open(url)
	pageHtml = pageFile.read()
	pageFile.close()
	soup = BeautifulSoup("".join(pageHtml))
	#sAll = soup.findAll("li")
	sAll = soup.findAll("tr", attrs = {'class': 'mediaitem'})
	
	for href in sAll:
		print href

print( getLinks("http://site.com/liste") )
Möglicherweise hat jemand in diesem Gebiet mehr Erfahrung als ich und hat sowas schon in einer Ähnlichen Form programmiert. Ich bin für jede Hilfe dankbar!


VG
PeacePipe
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Bite definiere außerhalb von Funktionen nur Konstanten und schreibe deren Namen GROSS.
Variablen sollten verdeutlichen, was sie sind. Länge frisst kein Brot. Statt sAll wäre trs (tr + das Plural s) wohl verständlicher.

Um an den Inhalt des href-Attributs zu kommen, verwende .get('href') auf das entsrpechende Element.

Die Dokumentation ist da hilfreich.
Antworten