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

news2024/11/26 15:45:58

文章目录

  • Selenium介绍
  • 用Selenium方法爬取LOL每个英雄的图片及名字

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()
  • 爬取结果
    • 点击图片链接便可以查看
      在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2045219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进程间通信---管道通信、命名管道、匿名管道详解

什么是通信? 为什么要通信? 如何做到通信? 管道是什么? 管道用来干什么? 管道如何实现通信? 匿名管道是什么? 如何实现? 命名管道是什么? 如何实现? 什么是文…

探究 Element Plus Menu 横向多层级展开组件的 Bug 及解决方案

文章目录 1 ellipsis 是否省略多余的子项(仅在横向模式生效)问题描述解决方案 2 多个级别的子菜单位置错乱或默认直接展开问题描述解决方案1 index没有设置2 通用策略 1 ellipsis 是否省略多余的子项(仅在横向模式生效) 问题描述…

Global Structure-from-Motion Revisited golmap论文翻译

Global Structure-from-Motion Revisited Paper:https://demuc.de/papers/pan2024glomap.pdf Code:https://github.com/colmap/glomap 摘要- 从图像中恢复三维结构和摄像机运动一直是计算机视觉研究的热点,被称为运动结构恢复(SfM)。这个问…

【RAG提升技巧】查询改写HyDE

简介 提高 RAG 推理能力的一个好方法是添加查询理解层 ——在实际查询向量存储之前添加查询转换。以下是四种不同的查询转换: 路由:保留初始查询,同时查明其所属的适当工具子集。然后,将这些工具指定为合适的选项。查询重写&…

[论文笔记]ZeRO: Memory Optimizations Toward Training Trillion Parameter Models

引言 今天带来ZeRO: Memory Optimizations Toward Training Trillion Parameter Models的论文笔记。 大型深度模型提供了显著的准确性提升,但训练数十亿到数万亿个参数是具有挑战性的。现有的解决方案,如数据并行和模型并行,存在基本的局限…

汇昌联信做拼多多电商如何提升浏览量?

在拼多多电商平台上,如何提升商品的浏览量是每个卖家都关注的问题。高浏览量不仅意味着更多的潜在客户,还能间接提升销量和店铺的知名度。汇昌联信作为电商运营者,需要采取有效策略来吸引消费者的注意力。 一、优化商品标题和描述 商品标题是…

LDR6328Q:重塑电源管理新境界的取电芯片

在电子设备日益普及的今天,高效、智能的电源管理成为了提升用户体验的关键因素之一。而LDR6328Q作为一款专为设备端设计的取电芯片,凭借其出色的性能和创新的技术,正逐步成为电源管理领域的一颗璀璨新星。本文将深入探讨LDR6328Q取电芯片的特…

大模型面经,不要到处找了,收藏我这一篇就够了

在当前技术快速发展的背景下,大模型领域的职位成为了许多求职者的热门选择。为了帮助大家更好地准备面试,这里整理了一份大模型面试经验分享,涵盖了一些常见的面试流程、可能遇到的技术问题以及面试官可能会问到的行为问题等。 大模型面试经…

什么是实时数据仓库? 优势与最佳实践

在当今数据驱动的世界中,许多企业使用实时数据仓库来满足其分析和商业智能 (BI) 需求。这使他们能够做出更好的决策、推动增长并为客户提供价值。 数据仓库是一种数据存储和管理系统,其设计目标只有一个:管理和分析数据,以实现商…

链表求和问题(面试题)

目录 一题目: 二思路汇总: 三解答代码: 一题目: leetcode题目链接 :面试题 02.05. 链表求和 - 力扣(LeetCode) 二思路汇总: 想到这道题,可能看起来第一思路就是把它们…

【C++二分查找】2563. 统计公平数对的数目

本文涉及的基础知识点 C二分查找 LeetCode2563. 统计公平数对的数目 给你一个下标从 0 开始、长度为 n 的整数数组 nums ,和两个整数 lower 和 upper ,返回 公平数对的数目 。 如果 (i, j) 数对满足以下情况,则认为它是一个 公平数对 &…

利用住宅代理优化媒体监控,全面提升品牌管理与市场竞争力

引言 什么是媒体监控?主要用于哪里? 媒体监控面临的主要挑战 住宅代理在媒体监控中的作用 如何利用住宅代理进行媒体监控 总结 引言 在信息化时代,媒体监控(media monitoring)已成为企业进行品牌声誉管理、市场研…

喵喵蓝牙热敏打印机(下)

目录 前言一、电量、温度、缺纸检测1.电量检测2.针头温度检测3.缺纸检测 二、蓝牙APP通信打印1.蓝牙初始化2.APP通信打印 三、FreeRTOS任务整合 前言 喵喵蓝牙热敏打印机(上) 内容有点多,就分为了上下两篇。 一、电量、温度、缺纸检测 先启…

Codigger视频会议(Meeting):科技行业软件开发团队的协作革新

在数字化时代,软件开发团队的协作方式正在经历一场革命。远程工作已成为新常态,而Codigger视频会议(Meeting)作为这场变革的催化剂,正在帮助科技行业的团队突破地理限制,实现无缝协作。 随着科技行业的快速…

Adobe Audition AU 2023-23.6.6.1 解锁版下载和安装教程(专业的音频处理工具)

前言 Audition是Adobe旗下一款非常好用的音频处理工具,软件为用户们提供了功能强大的音频编辑功能和一个相对完善的工作流程,用户们无论是录制音乐、无线电广播还是视频配音,多音频合成,这款软件都能够给你足够的创作动力。audit…

MR400D工业级带网口4G DTU:RS232/RS485 TO LTE深度测评

在物联网技术日新月异的今天,数据传输的效率和稳定性成为了各行各业关注的焦点。作为一款集先进性与实用性于一身的物联网设备,工业级带网口的4G DTU(数据传输单元)以其强大的功能特性和广泛的应用场景,赢得了市场的广…

整合nacos遇到的小问题

1.nacos创建配置中心文件时,创建不了,原因是新版本nacos数据表有字段加了安全校验 2.bootStrap.yaml文件创建时。需注意文件名称和后缀

simulink种deadzone死区模块的理解和使用,使用simulink开发pid的时候经常添加deadzone(重要)

Dead Zone模块产生指定范围(称为截止区)内的零输出。输入输出的关系如下: 1、输入落入截止区,输出0 2、输入大于上限值,输出上限值 3、输入小于等于下限值,输出下限值 使用simulink开发pid的时候经常添…

人工智能在子宫内膜癌领域的研究进展|顶刊速递·24-08-12

小罗碎碎念 本期推文主题:人工智能在子宫内膜癌领域中的研究进展 昨天的推文主要介绍的是卵巢癌,有一小部分涉及到了子宫内膜癌,按照最新的规划,今天的推文是与子宫内膜癌相关的。 从事妇科肿瘤研究的老师/同学,可以好…

探索数字媒体产业园区的未来之路

随着科技的飞速发展和数字经济的崛起,数字媒体产业园区正迎来前所未有的机遇和挑战。未来,数字媒体产业园区的发展将主要体现在以下几个方面: 1. 技术驱动的创新 数字媒体产业园区将继续受到前沿技术的推动。人工智能、大数据、虚拟现实和增…