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 -
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
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()
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_()