selenium补充: 滚动条
简述:
当一个页面的数据不能一次性渲染完成时,使用selenium也不能直接获取到所有页面数据,这时就需要我们通过指令, 执行下拉滚动条的命令,来加载所有要加载的数据
方法:
1. 使用js可以达到滑动滚动条的目的

2. 使用selenium的指令来调用js指令
实例:
"""获取京东索尼相机页面数据""" from selenium import webdriver from lxml import etree from time import sleep # 创建模拟浏览器并访问 myweb = webdriver.Chrome() url = 'https://search.jd.com/Search?keyword=%E5%BE%AE%E5%8D%95%E7%9B%B8%E6%9C%BA&enc=utf-8&wq=%E5%BE%AE%E5%8D%95%E7%9B%B8%E6%9C%BA&pvid=o3ogjboi.r5cini' myweb.get(url) # 编写js,滑动滚动条,并使用模拟浏览器调用(等待页面数据加载,睡3秒) js = "document.documentElement.scrollTop=100000" myweb.execute_script(js) sleep(3) # 获取页面数据 html = myweb.page_source # 解析HTML,提取价格和名字,打印 e = etree.HTML(html) prices = e.xpath("//div[@class='gl-i-wrap']/div[@class='p-price']/strong/i/text()") names = e.xpath("//div[@class='gl-i-wrap']/div[@class='p-name p-name-type-2']/a") print('---------当前加载的产品数据量', len(names)) for price, name in zip(prices, names): name = name.xpath('string(.)') print('产品名:', name.strip(), '价格:', price.strip())

浙公网安备 33010602011771号