2017-01-13 3 views
0

imはpythonを使用して特定のURLからすべての画像を取得しようとしています。BeautifulSoupがJavaScript /角型コンテンツを待つ

私は美しいスープの使用は問題ありませんが、私は問題に直面しています。すべてのimgタグがコンソールに表示されているわけではありません。目的のHTMLファイルを詳しく見ると、欠けている画像は、のdata-ng-srcタグを持っているため、Angularから来ています。

すべてのスクリプトが終了するまでスープを待つよう指示する方法はありますか?または、imgタグをすべて検出する方法がありますか?これまで

マイコード:

import urllib2 
from BeautifulSoup import BeautifulSoup 

page = BeautifulSoup(urllib2.urlopen(url)) 
allImgs = imgs = page.findAll('img') 
print allImgs 
+1

可能な重複[こすりHTMLのpythonではJavaScriptによって生成されました](http://stackoverflow.com/questions/2148493/scrape-html-generated-by-javascript-with- Python) –

答えて

0

画像は、彼らはそれにリンクされているHTMLページに挿入されていません。 そして、待ち時間/休止時間が必要なものについては、むしろ Selenium Web Driverを使用します。私はBeautiful Soupが一度にページ を読んでいると思います。私は恐怖のためのラッパーとしてそれについて考えます ファイルの解析の雑用が、ページと対話するためのツールとしてではありません。

1

セレンを試すことができます。このライブラリは自動化テストに使用されていますが、これはBeautifulSoupよりも豊富な機能を持っています

from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.common.exceptions import TimeoutException 

url ='http://example.com/' 
driver = webdriver.Firefox() 
driver.get(url) 

delay = 5 # seconds 

try: 
    WebDriverWait(driver, delay).until(EC.presence_of_element_located(driver.find_elements_by_xpath('..//elementid'))) 
    print "Page is ready!" 
    for image in driver.find_elements_by_xpath('..//img[@src]'): 
     print image.get_attribute('src') 
except TimeoutException: 
    print "Couldn't load page" 

また、次の記事を読んでください。 JS
を使用して動的にロードされたページについての協議 https://stackoverflow.com/a/11460633/6626530

関連する問題