Python-Bibliothek für komplexes Web Scraping?

Mein Ziel ist es, mit einer Website (Portfolio123.com) zu interagieren und Ergebnisse von Finanzstudien herunterzuladen.

Um zu den Inhalten zu gelangen, müssen Sie sich anmelden, dann auf Schaltflächen klicken und/oder Formulare ausfüllen. Einige dieser Schaltflächen werden mit „body onload“ geladen. Das resultierende HTML enthält häufig einen Link zu einer herunterladbaren Excel-Datei, die speziell für den angemeldeten Benutzer generiert wird.

Daher sind einige der Anforderungen:

  • Kekse.
  • Warten Sie auf "body onload".
  • Suchen (und klicken) Sie ein Element nach ID, Name oder XPath.
  • Importieren Sie eine bestimmte Tabelle aus HTML.
  • Führen Sie JavaScript aus.
  • Download in Datei und/oder Widerspruch.

Einige vorläufige Entscheidungen, die ich bisher getroffen habe:

  • Selen .
  • RoboBrowser . BEARBEITEN: Blends Requests und BeautifulSoup. Klickt nicht auf JavaScript-Schaltflächen.
  • Mechanisieren + ExecJS . EDIT: Mechanize hat bei mir nicht funktioniert. Siehe https://stackoverflow.com/questions/30655568/login-to-a-website-using-python-and-mechanize
  • Schroff . Dies scheint, als ob es auf Web-Crawling abzielt. Aber wird es die Arbeit gut machen?
  • PythonWebKit . Das sah vielversprechend aus, aber als ich versuchte, es mit pip install PyhthonWebKit in Python zu installieren, funktionierte es nicht. Ich bekomme die Meldung: "Keine passende Distribution für PythonWebKit gefunden".
  • Trockenkratzen .

Funktioniert eines davon?

Ich habe diese Liste durch Suchen im Internet erhalten, aber ich weiß nicht einmal, ob sie den Job machen. Ich hoffe, dass diejenigen unter Ihnen, die Erfahrung mit diesen Bibliotheken haben, mich darüber informieren können.
Aus Ihrer Frage sind einige weitere Dinge ziemlich unklar: Suchen Sie nach einer Bibliothek (um Ihre eigene Anwendung zu codieren) – oder nach einer gebrauchsfertigen Anwendung, die Sie nur konfigurieren müssen? Außerdem ist der Titel irreführend – und könnte den einen oder anderen dazu verleiten, ihn zum Abschluss zu bringen (wir behandeln keine Howtos, Handbücher, Tutorials und dergleichen).
Sie haben vergessen, Beautiful Soup ( crummy.com/software/BeautifulSoup ) aufzulisten . Ich bin mir nicht sicher, ob es das kann, was Sie wollen, aber es hat mit Scrapy eine gute Bewertung erhalten, also können Sie es auch versuchen, während Sie die anderen ausprobieren.
@Mawg BeautifulSoup ist ein leistungsstarkes Tool zum Analysieren von HTML. Es kann bei Bedarf zusätzlich zu einigen der anderen oben genannten Optionen verwendet werden.

Antworten (3)

  • PyQt ist eines, das dabei helfen könnte, komplexe, mit JS gefüllte Websites zu überarbeiten.
  • Selen ist in Ordnung, siehe Beispiel .
  • DryScrape ist ok, obwohl ich es nicht so oft benutzt habe.

Es ist sehr einfach, wenn Sie dryscrape python verwenden . Auf einem Ubuntu-PC erfolgt die Installation wie folgt:

# apt-get install qt5-default libqt5webkit5-dev build-essential \
python-lxml python-pip xvfb

Verwendung wie folgt:

Import dryscrape as d
    Import time #for refreshing or waiting for page
    d.start_xvfb() #for using this in linux without Xserver
    br = d.Session() #creating new session
    br.visit('<Any Url>') #for open the page
    Input = br.at_xpath('//*[@name="email"]') #for find input
    Input.set('<input value>')
    Input.form().submit() #for submit
    time.sleep(5) #wait for page load

Auf Android funktioniert das problemlos.

Selenium kann alles, was Benutzer in einem Browser tun können, auf browserübergreifende Weise. Es ist der W3C-Standard für die Browserautomatisierung, und das Erlernen von Selenium ist eine gute Fähigkeit für Ihre Karriere (über dieses Web-Scraping-Projekt hinaus).

Es wird häufig für die Testautomatisierung von webbasierten Anwendungen verwendet.