web-dev-qa-db-fra.com

Comment analyser un site Web en utilisant Selenium et Beautifulsoup en python?

Nouveau dans la programmation et compris comment naviguer vers où je dois aller en utilisant Selenium. J'aimerais analyser les données maintenant, mais je ne sais pas par où commencer. Quelqu'un peut-il tenir ma main une seconde et me diriger dans la bonne direction?

Toute aide appréciée -

37
twitch after coffee

En supposant que vous êtes sur la page que vous souhaitez analyser, Selenium stocke le code HTML source dans le page_source attribut. Vous devez ensuite charger le page_source en BeautifulSoup comme suit:

In [8]: from bs4 import BeautifulSoup

In [9]: from Selenium import webdriver

In [10]: driver = webdriver.Firefox()

In [11]: driver.get('http://news.ycombinator.com')

In [12]: html = driver.page_source

In [13]: soup = BeautifulSoup(html)

In [14]: for tag in soup.find_all('title'):
   ....:     print tag.text
   ....:     
   ....:     
Hacker News
97
RocketDonkey

Comme votre question n'est pas particulièrement concrète, voici un exemple simple. Pour faire quelque chose de plus utile, lisez le BS docs . Vous trouverez également de nombreux exemples d'utilisation du sélénium (et BS) ici dans SO.

from Selenium import webdriver
from bs4 import BeautifulSoup

browser=webdriver.Firefox()
browser.get('http://webpage.com')

soup=BeautifulSoup(browser.page_source)

#do something useful
#prints all the links with corresponding text

for link in soup.find_all('a'):
    print link.get('href',None),link.get_text()
15
root

Voulez-vous vraiment utiliser le sélénium? Pour ces raisons, j'ai utilisé PyQt4 , il est très puissant et vous pouvez faire ce que vous voulez.

Je peux vous donner un exemple de code, que je viens d'écrire, changez simplement d'URL et vous êtes prêt à partir:

#! /usr/bin/env python2.7

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from bs4 import BeautifulSoup
import sys, signal

class Browser(QWebView):
    def __init__(self):
        QWebView.__init__(self)
        self.loadProgress.connect(self._progress)
        self.loadFinished.connect(self._loadFinished)
        self.frame = self.page().currentFrame()

    def _progress(self, progress):
        print str(progress) + "%"

    def _loadFinished(self):
        print "Load Finished"
        html = unicode(self.frame.toHtml()).encode('utf-8')
        soup = BeautifulSoup(html)
        print soup.prettify()
        self.close()

if __== "__main__":
    app = QApplication(sys.argv)
    br = Browser()
    url = QUrl('http://web site that can contain javascript.com')
    br.load(url)
    br.show()
    if signal.signal(signal.SIGINT, signal.SIG_DFL):
        sys.exit(app.exec_())
    app.exec_()
2
Vor