首页 > 编程语言 >Python爬虫——Selenium方法爬取LOL页面

Python爬虫——Selenium方法爬取LOL页面

时间:2024-08-12 21:58:55浏览次数:14  
标签:XPATH hero Python Selenium driver LOL li 浏览器

文章目录

Selenium介绍

Selenium 是一个用于自动化Web应用程序测试的工具,但它同样可以被用来进行网页数据的抓取(爬虫)。Selenium 通过模拟用户在浏览器中的操作(如点击、输入、滚动等)来与网页交互,并可以捕获网页的渲染结果,这对于需要JavaScript渲染的网页特别有用。

    1. 安装Selenium
      首先,你需要安装Selenium库。可以通过pip安装:

      pip install selenium
      
    1. 下载WebDriver
      Selenium需要WebDriver来与浏览器交互。WebDriver是一个浏览器特定的驱动程序,允许Selenium控制浏览器。你需要根据你的浏览器(如Chrome、Edg等)下载相应的WebDriver。
    • 如何下载使用:
      • 直接在网上搜索你所使用的浏览器驱动,下载和你浏览器相同版本的驱动
      • 比如edg浏览器:
        在这里插入图片描述
        在这里插入图片描述
      • 下载和你的浏览器相同的驱动
      • 将下载好的驱动放在你的python.exe同一个目录下
      • 或者使用时可以在代码中指定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()
  • 爬取结果
    • 点击图片链接便可以查看
      在这里插入图片描述

标签:XPATH,hero,Python,Selenium,driver,LOL,li,浏览器
From: https://blog.csdn.net/weixin_73504499/article/details/141141678

相关文章

  • Python酷库之旅-第三方库Pandas(076)
    目录一、用法精讲311、pandas.Series.str.encode方法311-1、语法311-2、参数311-3、功能311-4、返回值311-5、说明311-6、用法311-6-1、数据准备311-6-2、代码示例311-6-3、结果输出312、pandas.Series.str.endswith方法312-1、语法312-2、参数312-3、功能312-......
  • 用Python实现9大回归算法详解——01线形回归算法
    1.线性回归的基本概念线性回归是一种最基本的监督学习算法,用于预测因变量(目标变量)和一个或多个自变量(特征变量)之间的关系。线性回归假设因变量与自变量之间的关系是线性的,即可以用以下形式的线性方程来表示:其中: 是因变量(目标变量)。 是自变量(特征变量)。是截距项,表示当所......
  • python基础语法
    python基础语法流程控制语句概述:指的是Python代码按照什么样的顺序来执行,从上往下,还是往左往右,还是循环执行等.分类顺序结构:默认结构,按照从上到下,从左往右,依次逐行执行.分支结构:多指if语句,满足特定条件下,才会执行对应的代码.循环结构:指for,while语句,......
  • python入门语法
    python入门语法前言python概述:是一门以面向对象为基础的面向函数式编程语言,强调的解决问题本身,而不是语言的结构等.特点:简单,易学,开源,免费,可移植性,丰富的库.1.变量变量介绍概述:用于临时存储数据的,存储在内存中,程序执行结束,数据就丢失了.......
  • Python中实现微信支付
    Python中实现微信支付一,准备环境1,要有微信公众号,商户平台账号https://pay.weixin.qq.com/wiki/doc/api/index.html2,支持的支付方式有 1540176727044.png3,备案域名选择扫码支付,如果使用模式二则不需要域名,只需要可访问的IP地址就行。一,扫码支付点击“扫码支付”......
  • 微信支付 Python
    需求:微信打开商品列表页面->点击商品后直接显示付款页面->点击付款调用微信支付说明微信支付需要你申请了公众号(appid,key-用于签名),商户号(mch_id,AppSecret-用于获取openid,获取code)调起微信支付的页面需要配置授权,如你的页面是http://www.shazuihuo.com/goo......
  • OpenCv学习-python
    一.OpenCv介绍简介OpenCV(OpenSourceComputerVisionLibrary:opencv官网地址)是一个开源的基于BSD许可的库,它包括数百种计算机视觉算法。文档OpenCV2.xAPI描述的是C++API,相对还有一个基于C语言的OpenCV1.xAPI,后者的描述在文档opencv1.x.pdf中。OpenCV具有模块化结......
  • python-xlsxwriter的基本使用
    安装xlsxwriter:pipinstallXlsxWriter简单实例:#coding:utf-8importxlsxwriterworkbook=xlsxwriter.Workbook('demo1.xlsx')#创建一个Excel文件worksheet=workbook.add_worksheet()#创建一个工作表对象worksheet.set_column('A:A',20)#设定第一列(A)宽度为20像素bold=......
  • mysql数据库:使用Python操作MySQL
    mysql数据库:使用Python操作MySQL安装第三方模块pymysqlpipinstallpymysql操作MySQLimportpymysql#创建连接#需要传入一些参数:#hostmysql所在的主机名或者是域名或者是ip地址#portmysql运行的端口号#ps-aux|grepmysql找到MySQL运行的进程......
  • 2024华为OD笔试机试 - 模拟目录管理功能 (python/c++/java D卷C卷真题算法)
    华为OD机试(C卷+D卷)2024真题目录(Java&c++&python)题目描述实现一个模拟目录管理功能的软件,输入一个命令序列,输出最后一条命令运行结果。支持命令:创建目录命令:mkdir目录名称,如mkdirabc为在当前目录创建abc目录,如果已存在同名目录则不执行任何操作。此命令无输出......