如何滚动div以获取所有动态加载项?

时间:2018-02-19 14:04:56

标签: python selenium web-scraping

我试图废弃网站https://cs.money以获取所有商品和价格,但我的脚本仅加载前180张皮肤,而我不知道如何加载所有商品。有人可以给我一个提示,我应该使用什么来加载所有项目,最好的方法是什么?

from selenium import webdriver
import time
import pandas as pd
options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('window-size=1200x600')

driver = webdriver.Chrome(chrome_options=options)

driver.get('https://cs.money/en')
time.sleep(5)
asd = driver.find_elements_by_class_name("item")
qwe = []
for a in asd:
    if a.get_attribute("ar"):
        qwe.append([a.get_attribute("hash"), a.get_attribute("cost"), a.get_attribute("ar")])
    else:
        qwe.append([a.get_attribute("hash"), a.get_attribute("cost"), ])
driver.close()

lables = ['name', 'price', 'float_bonus']
dataas = pd.DataFrame.from_records(qwe, columns=lables)

1 个答案:

答案 0 :(得分:0)

而不是time.sleep(5)你可以添加:

for i in range(0,5): # here you will need to tune to see exactly how many scrolls you need
  driver.execute_script('window.scrollBy(0, 400)')
  time.sleep(1)

当您需要在页面上滚动动态内容时,以上是一般解决方案。

在你的情况下,我认为时间最好的方法是滚动查看总是你可以使用的最后一个元素:

for i in range(0,25): # here you will need to tune to see exactly how many scrolls you need
  driver.execute_script('items = document.querySelectorAll(".item");i = items[items.length-1];i.scrollIntoView();')

这是您可以在浏览器控制台中尝试的JS代码段:

items = document.querySelectorAll(".item");i = items[items.length-1];i.scrollIntoView();