2016-07-02 14 views
1

linkの色付きのテキストを抽出しようとしています。私はPythonでBeautifulSoupを使用しています。コードは次のとおりです。ページからのJavaScript有効データの抽出

import time, urllib2, re 
from bs4 import BeautifulSoup 
url='http://de.vroniplag.wikia.com/wiki/Aaf/008' 
def gethtml(link): 
    time.sleep(2) 
    req = urllib2.Request(link, headers={'User-Agent': "Magic Browser"}) 
    con = urllib2.urlopen(req) 
    html = con.read() 
    return html 

soup=BeautifulSoup(gethtml(url),'html.parser') 
print soup.findAll('span', attrs={"class": re.compile('fragmark')}) 

返される結果は空です。それを動作させるにはどうすれば変更できますか?

UPDATE:次のように私はコードで、chromedriverを使用しています

from selenium import webdriver 
import os 

chromedriver = "./chromedriver" 
os.environ["webdriver.chrome.driver"] = chromedriver 
driver = webdriver.Chrome(chromedriver) 

driver.get('http://de.vroniplag.wikia.com/wiki/Aaf/008') 
for tag in driver.find_elements_by_css_selector('[class^=fragmark]'): 
    print(tag.text) 
driver.quit() 

しかし、ブラウザが開きます。結果は表示されません。ブラウザを閉じてエラーが発生します。

答えて

1

JavaScriptを解釈できるライブラリを使用する必要があります。たとえば、fragmark1,fragmark2などの要素は、javascriptによって作成されているため、seleniumを使用しています。

from selenium.webdriver import Chrome as Driver 
# Replace with `Chrome` with your system browser 

driver = Driver() 
driver.get('http://de.vroniplag.wikia.com/wiki/Aaf/008') 
for tag in driver.find_elements_by_css_selector('[class^=fragmark]'): 
    print(tag.text) 
+0

回答ありがとうございました。私はクロムを持っていない。私はクロムドライブを使用しています。新しいコードをUPDATEとして投稿しました。どうかチェックしてください –

+0

Firefoxをインストールしている場合は、 'FireFox'で' Chrome'を変更することができます。 (PhantomJS、Edge、Opera、Ie、Safari、...も可能です)。 'import selenium.webdriver; print(dir(selenium.webdriver)) ' – falsetru

関連する問題