2017-04-05 3 views
0

Ich versuche ein bestimmtes Stück einer Website zu kratzen. Ich hoffe zu erreichen:AttributeError: 'str' Objekt hat kein Attribut 'Nachkommen'

<div class="inhoudsindicatie"><p><span class="hl0 highlightColor0">HR</span>: art. 81RO.</p></div> 

und insbesondere der "Art. 81RO" Teil davon.

from selenium import webdriver 
from bs4 import BeautifulSoup as soup 
driver.get('http://uitspraken.rechtspraak.nl/inziendocument?id=ECLI:NL:HR:2014:3004&showbutton=true&keyword=HR%3a') 
page=soup(driver.page_source, "html.parser") 
details=soup.findAll("span",{"class":"hl0 highlightColor0"}) 

Es gibt:

AttributeError: 'str' object has no attribute 'descendants' 

Was über meinen Code bedeutet? Ich lese die allgemeinen Informationen über die Nachkommen und ich bin mir ziemlich sicher, dass ich es nicht verstehe.

(Mein Hauptinteresse ist es, das Problem zu verstehen, ist es sekundär zu lösen, obwohl natürlich sehr geschätzt)

+1

Sie haben Ihr dirver zu definieren, zum Beispiel: 'Treiber = webdriver.Firefox()' –

+0

Warum versuchst du nicht mit urllib2 oder Anfragen? –

Antwort

1

Das ist für mich gearbeitet: sowieso

import time 
from selenium import webdriver 
from bs4 import BeautifulSoup as soup 
driver = webdriver.Chrome("/path/to/chromedriver") 
driver.get('http://uitspraken.rechtspraak.nl/inziendocument?id=ECLI:NL:HR:2014:3004&showbutton=true&keyword=HR%3a') 
time.sleep(5) 
page = soup(driver.page_source, "html.parser") 
details = page.select_one("span.hl0.highlightColor0").find_parent().get_text() 
print(details) 
driver.quit() 

# output: HR: art. 81RO. 

Aber da Sie verwenden Selen, warum nicht einfach dabei bleiben?

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.ui import WebDriverWait 

driver = webdriver.Chrome("/path/to/chromedriver") 
driver.get('http://uitspraken.rechtspraak.nl/inziendocument?id=ECLI:NL:HR:2014:3004&showbutton=true&keyword=HR%3a') 
wait = WebDriverWait(driver, 10) 
xpath = "//p/span[contains(@class, 'highlightColor0') and contains(@class, 'hl0')]/.." 
details = wait.until(EC.visibility_of_element_located((By.XPATH, xpath))) 
print(details.text) 
driver.quit() 

# output: HR: art. 81RO. 

Wenn Sie die 'HR:' nicht wollen Teil kann entnommen werden:

details.split('HR: ')[1] 

# output: art. 81RO. 
Verwandte Themen