2016-10-13 3 views
0

Ich versuche, JavaScript-Daten von einer Website zu kratzen. Momentan habe ich die Herausforderung, die Anzahl der Follower von this website zu kratzen. Hier ist mein Code so weit:Scraping Javascript mit Selenium über Python

import os 
from selenium import webdriver 
import time 

chromedriver = "/Users/INSERT USERNAME/Desktop/chromedriver" 
os.environ["webdriver.chrome.driver"] = chromedriver 
driver = webdriver.Chrome(chromedriver) 
driver.get("http://freelegalconsultancy.blogspot.co.uk/") 
time.sleep(5) 

title = driver.find_element_by_class_name 
print title 

Wie Sie sehen können, habe ich eine chromedriver Datei habe auf meinem Desktop. Wenn ich den Code ausführe, bekomme ich folgendes Ergebnis:

<bound method WebDriver.find_element_by_class_name of <selenium.webdriver.chrome.webdriver.WebDriver (session="dd9e5d3f429bc2810c30ebe7067e4e22")>> 

Ich habe versucht, dies mit einer for-Schleife zu iterieren, aber es gab einen Fehler zurück. Weiß jemand wie ich die Javascript Daten bekommen kann und letztendlich die Anzahl der Follower bekomme?

EDIT:

So wie pro Antrag, ich habe meinen Code dies geändert:

import os 
from selenium import webdriver 
import time 

chromedriver = "/Users/INSERT USERNAME/Desktop/chromedriver" 
os.environ["webdriver.chrome.driver"] = chromedriver 
driver = webdriver.Chrome(chromedriver) 
driver.get("http://freelegalconsultancy.blogspot.co.uk/") 
time.sleep(5) 

title = driver.find_element_by_class_name("member-title") 
print title 

Aber ich habe jetzt diesen Fehler:

Traceback (most recent call last): 
    File "C:\Users\INSERT USERNAME\Desktop\blogger_v.1.py", line 11, in <module> 
    title = driver.find_element_by_class_name("member-title") 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 413, in find_element_by_class_name 
    return self.find_element(by=By.CLASS_NAME, value=name) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 752, in find_element 
    'value': value})['value'] 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute 
    self.error_handler.check_response(response) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response 
    raise exception_class(message, screen, stacktrace) 
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"class name","selector":"member-title"} 
    (Session info: chrome=53.0.2785.143) 
    (Driver info: chromedriver=2.24.417431 (9aea000394714d2fbb20850021f6204f2256b9cf),platform=Windows NT 6.1.7601 SP1 x86_64) 

Alle Ideen, wie Ich kann es umgehen?

EDIT:

Also habe ich meinen Code dies geändert:

import os 
from selenium import webdriver 
import time 

chromedriver = "/Users/INSERT USERNAME/Desktop/chromedriver" 
os.environ["webdriver.chrome.driver"] = chromedriver 
driver = webdriver.Chrome(chromedriver) 
driver.get("http://freelegalconsultancy.blogspot.co.uk/") 
time.sleep(5) 

title = driver.find_element_by_class_name("item-title") 
print title 

Und ich dieses Ergebnis:

<selenium.webdriver.remote.webelement.WebElement (session="5fe8fb966edd26fdf808da07f99d4109", element="0.9924860218635834-1")> 

Wie würde ich mich über nur alle Druck das Javascript? Ist das überhaupt möglich?

Antwort

0

Sie müssen den Klassennamen angeben, nach dem Sie als Parameter suchen.

title = driver.find_element_by_class_name("TheNameOfTheClass")

+0

Wenn ich alle Javascript Daten drucken wollte, wissen Sie, wie ich über das Tun das gehen würde? – semiflex