2016-04-16 6 views
-1

私はこのウェブサイト上でドロップされているどのように多くの特定の項目のチェックしようとしています。私はdivsの量を確認するために美しいスープを使用しています。コードを実行すると、同じ値が繰り返され、さらにアイテムが削除されても決して上がらない。ここに私のコードは次のとおりです。カウントのdivを3秒ごと

import time 
from bs4 import BeautifulSoup 
from selenium import webdriver 

url = "http://g2case.com/en" 
browser = webdriver.Chrome() 
browser.get(url) 

running = True 

while running: 

    for i in range(5): 
     soup = BeautifulSoup(browser.page_source, "html.parser") 
     milspecs = soup.findAll("div", {"class": "item milspec"}) 
     print(len(milspecs)) 
     time.sleep(3) 

    running = False 

print "done" 

答えて

0

あなたが実際にあなたのループの内側browser.get(url)への別の呼び出しで新しいページを取得する必要があります。そうであれば、ページを一度しか取得せず、同じページを何度も何度も繰り返し解析します。この方法では、ループのたびにページの現在のバージョンを取得します。追記として

while running: 

    for i in range(5): 
     # Be sure to actually fetch the new data 
     browser.get(url) 

     soup = BeautifulSoup(browser.page_source, "html.parser") 
     milspecs = soup.findAll("div", {"class": "item milspec"}) 
     print(len(milspecs)) 
     time.sleep(3) 

    running = False 

が、間違いなく、継続的にこのようなスクリプトを他の誰かのウェブサイトをポーリングすることは推奨されません。可能であれば、3秒ごとに傷つけることなくウェブサイトの基礎データにアクセスできる公開APIを探してみてください。

+1

プログラミングは楽しいですか? – kpie

0

私はあなたがそれを好きではないかもしれないが、あなたはサイトのローカルのバージョンごとに3秒を更新したい場合は、あなたもそれを3秒ごとにフェッチする必要がありますいくつかのウェブサイトへの一定の要求をしなければならないとは言いませんよ。ループの中にbrowser.get(url)をループすると、次のようになります。

... 
while running: 
    browser.get(url) 
    for i in range(5): 
    ... 
関連する問題