Python Selenium无限滚动-重新抓取

时间:2019-03-17 23:19:49

标签: python selenium

我已经建立了一个使用硒的脚本,它运作良好,但是我正在无限地抓取网站,因此内置了一些东西来管理它。

但是每次向下滚动它都会重新刮取之前刮过的数据!

如何将脚本更改为只刮取尚未刮取的数据?

我已经看到一些与此类似的问题,并基于它们添加了一些代码,但是我认为我的情况略有不同!

谢谢!

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()

1 个答案:

答案 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))