2017-05-06 14 views
-1

私は、Webページ上のテーブルの内容を自動的に取得するPythonスクリプトを作成しようとしています。 私は純粋なhtmlページで動作するように管理しますが、私に頭痛を与える一つのウェブサイトがあります... htmlはjavascriptによって生成されるようです。 私はdryscrape、selenium、qt4ライブラリをいくつかの記事にあるサンプルから試してみましたが、まだ成功していません...私はちょうどhtmlの前にjavascriptが仕事をしていたので....テーブルなしで.... できますブラウザの表を参照してください。また、Chromeを使用してhtmlを「検査」するときも参照してください。私が "View Page Source"をChromeで実行すると、テーブルもそこにはありません。これがいくつかのヒントを与えるかもしれません。Pythonを使ってjavascriptでHTMLを生成できません

import urllib2 
url="https://www.ictax.admin.ch/extern/en.html#/security/CH0008899764/20161231" 
html = urllib2.urlopen(url) 
print html 
:urlib2を使用して

:ここ

https://www.ictax.admin.ch/extern/en.html#/security/CH0008899764/20161231

は、私は(あなたがチェックすると答えには、テーブルタグ)を試してみたんいくつかのコードです:

ウェブサイトは以下のとおりです。

ドライスクラブの使用:

import dryscrape 
session = dryscrape.Session() 
session.visit(url) 
response = session.body() 
print response 

使用セレン:

from selenium import webdriver 
driver = webdriver.Chrome("/usr/lib/chromium/chromedriver") 
driver.get(url) 
print driver.page_source #page_source fetches page after rendering is complete 
driver.quit() 

PyQt4

import sys 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
from PyQt4.QtWebKit import * 
from lxml import html 

class Render(QWebPage): 
    def __init__(self, url): 
    self.app = QApplication(sys.argv) 
    QWebPage.__init__(self) 
    self.loadFinished.connect(self._loadFinished) 
    self.mainFrame().load(QUrl(url)) 
    self.app.exec_() 

    def _loadFinished(self, result): 
    self.frame = self.mainFrame() 
    self.app.quit() 

#This does the magic.Loads everything 
r = Render(url) 
#result is a QString. 
result = r.frame.toHtml() 
#QString should be converted to string before processed by lxml 
formatted_result = str(result.toAscii()) 
print formatted_result 

を使用して誰かが

乾杯にこの:-)に私に

+0

試したコードを投稿しても問題が解決しませんでしたか? –

+0

これを確認してください:http://stackoverflow.com/questions/43423656/trip-advisor-scraping-morelink/43424006#43424006 PhantomJSドライバを使用して、JSがページコンテンツを読み込むのを待つ必要があります。 – elena

+0

@DeanFenster私は動作しないコードを掲示しました(テーブルなしでHTMLを返します) – Fleppi

答えて

0

使用いくつかの助けを与えることができれば、私はそんなにいただければ幸いですどの要素も検索する前にページが読み込まれるのを待つ暗黙の待ち(または明示的な待ち?):

import selenium 
from selenium import webdriver 
driver = webdriver.PhantomJS() 
url = "https://www.ictax.admin.ch/extern/en.html#/security/CH0008899764/20161231" 
driver.get(url) 
driver.implicitly_wait(30) 
print(driver.find_element_by_tag_name("table").text) 

これは私が取得しています出力されます:

TITEL /力価/ Titoli W Nominell Valoren-NR。 Steuerwert Ertrag/ Rendement/Reddito 2016 M Valeur No de Val。不可能なデータム/日付 Cp。 W Brutto KG/KEP zu versteuernder V nominale valeur Val。不可視 データM Brut Ertrag/Rendement Valore数値31.12.2016 ex。 zahlb。 V 可愛らしい/レディート名誉金額を支払う。 imponible CHF(E)pag。 Fr.W. CHF CHF iShares ETF(CH) - iShares SMI(R)(CH)、Schweiz
CHF 0.00 889 976 85.31 25.02。 29.02。 36 CHF 0.48
03.03。 07.03。 37 CHF 0.48
11.04。 13.04。 38 CHF 0.70
19.07。 21.07。 40 CHF 0.88
19.07。 21.07。 39 CHF 0.20

+1

確かにこれは働いた!ありがとうエレナ! – Fleppi

関連する問題