2016-12-09 3 views
-1

pythonでリクエストモジュールを使用してウェブサイトにスパンフィールドを記録するスクリプトがあります。Pythonリクエストでのみ要素を更新する

from lxml import html 
import requests 

r = requests.get(url) 
tree = html.fromstring(r.content) 
while 1: 
    print str(tree.xpath('//span[@id="ofr"]/text()') 

しかし、このスパンを更新していると私は解決策を見つけることができないため、ページ全体を、リロードせずにこれを更新するために探しています。多くのありがとう

+0

リクエストはブラウザーではありません。ページに含まれている可能性のあるJavaScriptは実行されません。 *クライアント側のJavaScriptが実行される前の*のように、ページのHTMLのみを取得できます。あなたはスパンがどのように更新されたかを教えていただけますか?クライアントで何が起こっていますか? –

+1

Lutzありがとうございました、スパンが自動的に更新され、対話は必要ありません。それはあなたの質問に答えますか?あなたのコメントは正しい方向に私を指摘した、私はこれは似たような問題だと思う:http://stackoverflow.com/questions/8960288/get-page-generated-with-javascript-in-python – mikarific

+0

いいえ、そうではありません。どのようなメカニズムによって自動的に? JavaScript? 'refresh'メタタグ? –

答えて

0

あなたは1の間にrequests.get呼び出しを入れる必要があります。それ以外の場合は、Webサイトへの新しいリクエストはありません。 _lastValueは最後のラウンドのスパンの値を保持し、スクリプトは各ルックアップの間に1秒間スリープします。

from lxml import html 
import time 
import requests 

_lastValue = None 
while 1: 
    r = requests.get(url) 
    tree = html.fromstring(r.content) 
    _currentValue = str(tree.xpath('//span[@id="ofr"]/text()') 

    if _currentValue != _lastValue: 
     print _currentValue 
     _lastValue = _currentValue 

    time.sleep(1) 
+0

ありがとうモーリス、これは私の初期のアプローチでしたが、これはウェブサイト全体をリロードするにはあまりにも多くの遅延を引き起こします。私は更新フィールドから価格データを読み込もうとしています。 – mikarific

+0

ページがクライアント側のJavaScriptによっておそらく変更されるため、これは機能しません。 –

+0

サイト全体をリロードする必要があります.httpプロトコルはこのように動作します(xhr/ajax要求でスパンが変更された場合を除く) –

関連する問題