2016-10-06 11 views
-2

divのHTMLを​​から取得しようとしています。pythonセレンを使用してJSからHTMLを取得

しかし、divの求人求職者はネットワークXHRに基づいてgranite.min.jsからロードされます。

from selenium import webdriver 
from bs4 import BeautifulSoup 
from pprint import pprint 


path_to_chromedriver = "/Users/RichWin/Documents/chromedriver.exe" 
browser = webdriver.Chrome(executable_path=path_to_chromedriver) 

driver = browser.get('https://www.workday.com/en-us/company/careers/open-positions.html#?q=') 

elem = driver.find_element_by_id('template-content') 

soup = BeautifulSoup(elem.get_text, "html.parser") 

for tag in soup.find_all('div'): 
    pprint(tag) 

助けてもらえますか?

+1

以下のように質問を更新してください:http://stackoverflow.com/help/how-to-ask – dm295

+0

私の質問には何が問題なのですか? –

+0

誰もあなたのために仕事をするつもりはありません - 努力の証拠が必要です。つまり、 – dm295

答えて

1

あなたのコードにはいくつかの問題があります。

a)template-content divがコンテンツを読み込むまで待つ必要があります。コードでは、implicitly_waitを使用して30秒待っています。
b)find_element_by_idは、HTMLではなくSeleniumオブジェクトを返しません。したがって、解析のためにBeautifulSoupに渡すことはできません。

from pprint import pprint 
from bs4 import BeautifulSoup 
from selenium import webdriver 


url = 'https://www.workday.com/en-us/company/careers/open-positions.html#?q=' 
path_to_chromedriver = "/Users/RichWin/Documents/chromedriver.exe" 

browser = webdriver.Chrome(executable_path=path_to_chromedriver) 
browser.implicitly_wait(30) 
browser.get(url) 

elem = browser.find_element_by_id('template-content') 
elem_html = elem.get_attribute('innerHTML') 

soup = BeautifulSoup(elem_html, "html.parser") 
for tag in soup.find_all('div'): 
    pprint(tag) 

browser.quit() 
+0

oh。その理由は: AttributeError: 'NoneType'オブジェクトには属性がありません 'find_element_by_class_name' ありがとうございました! –

+0

いいえ問題は、答えを受け入れること自由に感じてください:http://stackoverflow.com/help/someone-answers – dm295

+0

私はこの答えを受け入れることができますか?私はここで新しいです。 –

関連する問題