每3秒计算一次页面上的div

时间:2016-04-16 19:59:30

标签: python selenium-webdriver beautifulsoup

我正在尝试检查在此网站上删除了多少某个项目。我用美丽的汤来检查div的数量。当我运行我的代码时,它只重复相同的值,即使丢弃更多项目也不会上升。这是我的代码:

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"

2 个答案:

答案 0 :(得分: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

作为旁注,绝对不建议用这样的脚本连续评估其他人的网站。如果可以的话,尝试找一个公共API,它可以让你访问网站下面的数据,而不是每隔3秒就抓一次。

答案 1 :(得分:0)

我并不是说你应该不断地向一些可能不喜欢它的网站发出请求,但是如果你想每隔3秒更新一次本地版本的网站,你也必须每次都获取它3秒。将browser.get(url)移动到循环中,如下所示:

...
while running:
    browser.get(url)
    for i in range(5):
    ...