Как я могу анализировать веб-сайт с использованием Selenium и Beautifulsoup в python?
Новый для программирования и выяснил, как перейти туда, где мне нужно идти, используя Selenium. Я хотел бы проанализировать данные сейчас, но не знаю, с чего начать. Может кто-то держать мою руку в секунду и указывать мне в правильном направлении?
Любая помощь оценена -
Ответы
Ответ 1
Предполагая, что вы находитесь на странице, которую хотите разборки, Selenium хранит исходный HTML-код в атрибуте page_source
драйвера. Затем вы загрузите page_source
в BeautifulSoup
следующим образом:
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
Ответ 2
Поскольку ваш вопрос не является конкретно конкретным, вот простой пример. Чтобы сделать что-то более полезное, прочитайте BS docs. Вы также найдете множество примеров использования селена (и BS) здесь в 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()
Ответ 3
Вы действительно хотите использовать Selenium? По этой причине я использовал PyQt4, он очень мощный, и вы можете делать все, что захотите.
Я могу дать вам пример кода, который я только что написал, просто измените URL-адрес, и вы хорошо пойдете:
#! /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 __name__ == "__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_()