我已经建立了一个使用硒的脚本,它运作良好,但是我正在无限地抓取网站,因此内置了一些东西来管理它。
但是每次向下滚动它都会重新刮取之前刮过的数据!
如何将脚本更改为只刮取尚未刮取的数据?
我已经看到一些与此类似的问题,并基于它们添加了一些代码,但是我认为我的情况略有不同!
谢谢!
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.chrome.options import Options
import time
import os
import csv
browser = webdriver.Chrome(executable_path="/chromedriver")
browser.get("***url***")
filename ="fileName.csv"
f = open(filename, 'w')
headers ="Title, Date, Time\n "
f.write(headers)
browser.find_element_by_css_selector('').click()
time.sleep(3)
page = browser.find_elements_by_class_name('')
# Get scroll height
last_height = browser.execute_script("return document.body.scrollHeight")
t_end = time.time() + 60
while time.time() < t_end:
try:
for items in page:
title = items.find_element_by_class_name('').text.replace(',', '|')
date = items.find_element_by_class_name('').text
print('Name:',title)
print('Date:',date)
print("")
f.write(title + "," + date.split(" ")[0] + "," + date.split(" ")[1] + "\n")
# Scroll down to bottom
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(5)
page = browser.find_elements_by_class_name('')
except:
break
f.close()
browser.quit()
答案 0 :(得分:0)
这里是样本,将负责进行整理,直到所有动态行都加载完毕,然后抓取页面。确保添加import time
driver.get("https://anilist.co/user/Agusmaris/animelist/Completed")
time.sleep(3)
footer =driver.find_element_by_css_selector("div.footer")
preY =0
while footer.rect['y']!=preY:
preY = footer.rect['y']
footer.location_once_scrolled_into_view
time.sleep(1)
print(str(driver.page_source))