文章目录
- Selenium介绍
 - 用Selenium方法爬取LOL每个英雄的图片及名字
 
Selenium介绍
Selenium 是一个用于自动化Web应用程序测试的工具,但它同样可以被用来进行网页数据的抓取(爬虫)。Selenium 通过模拟用户在浏览器中的操作(如点击、输入、滚动等)来与网页交互,并可以捕获网页的渲染结果,这对于需要JavaScript渲染的网页特别有用。
-  
  
-  
安装Selenium
首先,你需要安装Selenium库。可以通过pip安装:pip install selenium 
 -  
 -  
  
- 下载WebDriver
Selenium需要WebDriver来与浏览器交互。WebDriver是一个浏览器特定的驱动程序,允许Selenium控制浏览器。你需要根据你的浏览器(如Chrome、Edg等)下载相应的WebDriver。 
- 如何下载使用: 
    
- 直接在网上搜索你所使用的浏览器驱动,下载和你浏览器相同版本的驱动
 - 比如edg浏览器:


 - 下载和你的浏览器相同的驱动
 - 将下载好的驱动放在你的python.exe同一个目录下
 - 或者使用时可以在代码中指定WebDriver的路径
 
 
 - 下载WebDriver
 
用Selenium方法爬取LOL每个英雄的图片及名字
-  
使用Selenium方法相比requests方法爬取数据要简便的多
 -  
爬取步骤:
- 1、指定浏览器的驱动,并通过网址请求页面
 - 2、获取想要的数据
 
 -  
1、指定浏览器的驱动,并通过网址请求页面
- 这里我们使用的是edg驱动(已经将驱动放在了环境变量中)
 - 给定网址https://101.qq.com/#/hero
 - Selenium方法虽然不需要requests方法中那些前面的步骤,但还是需要查看索要爬取页面的请求方式(按F12),查看方法相同

# 指定驱动 driver = webdriver.Edge() # 请求页面 get请求方式 driver.get('https://101.qq.com/#/hero') 
 -  
获取想要的数据
-  
LOL这个页面需要通过一个方法,让其请求页面的时候等待几秒(可自己设定),为了让页面渲染完,不然会爬取失败
 -  
通过XPATH的方法获取所有存放信息的li标签
 -  
获取所有图片的url和英雄姓名

# 等待某个元素加载完成 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, "//ul[@class='hero-list']")) ) # 获取所有存放信息的li标签 li_list = driver.find_elements(By.XPATH, "//ul[@class='hero-list']/li") # 遍历每一个li标签,获取图片和英雄姓名 for li in li_list: img_url = li.find_element(By.XPATH, "div/div/img").get_attribute("src") hero_name = li.find_element(By.XPATH, "div/p").text print(img_url, hero_name) 
 -  
 -  
完整代码
 
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.edge.options import Options
if __name__ == '__main__':
	# 指定驱动
    driver = webdriver.Edge()
    # 请求页面
    driver.get('https://101.qq.com/#/hero')
    # 等待某个元素加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//ul[@class='hero-list']"))
    )
    # 等待某个元素加载完成
	WebDriverWait(driver, 10).until(
		EC.presence_of_element_located((By.XPATH, "//ul[@class='hero-list']"))
		    )
	# 获取所有存放信息的li标签
	li_list = driver.find_elements(By.XPATH, "//ul[@class='hero-list']/li")
	# 遍历每一个li标签,获取图片和英雄姓名
	for li in li_list:
		img_url = li.find_element(By.XPATH, "div/div/img").get_attribute("src")
		hero_name = li.find_element(By.XPATH, "div/p").text
		print(img_url, hero_name)
	# 关闭驱动
    driver.close()
 
- 爬取结果 
  
- 点击图片链接便可以查看

 
 - 点击图片链接便可以查看
 




![[论文笔记]ZeRO: Memory Optimizations Toward Training Trillion Parameter Models](https://img-blog.csdnimg.cn/img_convert/fe8c5d3ec56640d819ac0cf735b83f6a.png)














