我试图废弃网站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)
答案 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();