【问题标题】:Counting divs on a page every 3 seconds每 3 秒计算一次页面上的 div
【发布时间】:2016-08-08 17:16:18
【问题描述】:

我正在尝试检查有多少特定项目被丢弃在该网站上。我正在使用漂亮的汤来检查 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"

【问题讨论】:

    标签: python selenium-webdriver beautifulsoup


    【解决方案1】:

    我并不是说您应该不断地向某个可能不喜欢它的网站发出请求,但如果您想每 3 秒更新一次网站的本地版本,您还必须每 3 秒获取一次。像这样将browser.get(url) 移动到循环中:

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

    【讨论】:

      【解决方案2】:

      您实际上需要在循环内再次调用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 秒抓取一次。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-29
        • 1970-01-01
        • 1970-01-01
        • 2013-04-24
        • 2022-07-06
        • 1970-01-01
        • 2016-03-10
        • 1970-01-01
        相关资源
        最近更新 更多