2009-08-15 15 views
2

Ich versuche, eine Seite in youtube mit Python verschrotten, dieAjax Scraping - Mit Python

in es viel Ajax hat

Ich habe jedes Mal das Java-Skript aufrufen, die Informationen zu bekommen. Aber ich bin mir nicht sicher, wie ich das anstellen soll. Ich verwende das Modul urllib2 zum Öffnen von URLs. Jede Hilfe wäre willkommen.

Antwort

6

Youtube (und alles andere, was Google macht) verfügt bereits über EXTENSIVE APIs, die Ihnen Zugriff auf nahezu alle Daten geben, die Sie benötigen.

Weitere Informationen finden Sie unter The Youtube Data API.

Ich benutze Urllib, um die API-Anforderungen und ElementTree die zurückgegebene XML zu analysieren.

6

Hauptproblem ist, dass Sie gegen die Nutzungsbedingungen (TOS) der Youtube-Website verstoßen. Youtube-Ingenieure und Anwälte werden ihr bestes tun, um Sie aufzuspüren und ein Beispiel von Ihnen zu geben, wenn Sie bestehen bleiben. Wenn Sie mit dieser Aussicht zufrieden sind, dann, auf Ihrem Kopf sei es - technisch, Ihre beste Wette sind python-spidermonkey und selenium. Ich wollte die technischen Hinweise aufzeichnen, für den Fall, dass jemand in der Zukunft Bedürfnisse hat wie die, die der Titel Ihrer Frage anzeigt, ohne die rechtlichen Probleme, die Sie eindeutig haben, wenn Sie in diesem speziellen Unterfangen fortfahren.

+11

Ich empfehle, dass die Leute hier versuchen, ** Programmierer ** und nicht ** Anwälte zu sein. ** Es muss sicher andere Seiten/Seiten für Anwälte geben. Ich verstehe, dass einige von Ihnen auf der Gehaltsliste von Mr. G oder einem anderen großen Bruder sein könnten. Also, wenn jemand eine technische Frage stellt, bitte geben Sie zuerst eine technische Antwort, dann, wenn Sie wirklich müssen, werfen Sie eine kurze Linie von Rechtsberatung. ** Lassen Sie uns dies eine relevante Seite halten **. Nur ein freundlicher Hinweis an euch alle, weicht nicht von der vorliegenden Frage ab. – un33k

+2

Da wir Internetanwälte spielen, war mir nicht bewusst, dass die Verletzung von ToS illegal war (unabhängig davon, was Facebook zu sagen hat). Das Schlimmste, was sie tun könnten, um ihre Seite gegen ihre ToS zu scannen, wäre ein Verbot, ja? –

0

Wie vorgeschlagen, sollten Sie die YouTube-API verwenden, um auf die legitim bereitgestellten Daten zuzugreifen.

In Bezug auf die allgemeine Frage des Kratzens AJAX, möchten Sie vielleicht die scrapy framework betrachten. Es bietet umfangreiche Unterstützung für das Crawlen und Scrappen von Websites und verwendet python-spidermonkey unter der Haube, um auf JavaScript-Links zuzugreifen.

2

Hier ist, wie ich es tun würde: Installieren Sie Firebug auf Firefox, dann schalten Sie das NET in Firebug und klicken Sie auf den gewünschten Link auf YouTube. Jetzt sehen, was passiert und welche Seiten angefordert werden. Finde den, der für den AJAX-Teil der Seite verantwortlich ist. Jetzt können Sie urlib oder Mechanize verwenden, um den Link zu holen. Wenn Sie den gleichen Inhalt auf diese Weise ziehen können, dann haben Sie was Sie suchen, dann analysieren Sie einfach den Inhalt. Wenn Sie den Inhalt NICHT auf diese Weise ziehen können, würde das bedeuten, dass die angeforderte Seite möglicherweise Anmeldeinformationen, Sitzungsinformationen oder andere Headerfelder wie HTTP_REFERER usw. sucht. Dann möchten Sie vielleicht etwas mehr sehen umfangreich wie die Scrapy ... etc. Ich würde vorschlagen, dass Sie immer zuerst den einfachen Weg folgen. Viel Glück und glücklich "verantwortlich" kratzen! :)

0

Sie könnten den Netzwerkverkehr mit etwas wie Wireshark schnüffeln und dann die HTTP-Aufrufe über ein Scraping-Framework wiedergeben, das robust genug ist, um mit AJAX umzugehen, wie scraPY.