python-爬虫实例(5):将进酒,杯莫停!

news2024/11/15 10:24:54

目录

前言

将进酒,杯莫停!

一、浇给

 

 二、前摇

1.导入selenium库

 2.下载浏览器驱动

三、爬虫四步走

1.UA伪装

2.获取url

3.发送请求

4.获取响应数据进行解析并保存

总结


前言

        博主身为一个农批,当然要尝试爬取王者荣耀的东西啦。

 

将进酒,杯莫停!

 

一、浇给

import time
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__':

    # 无头模式
    opt = Options()
    opt.add_argument("--headless")
    driver = webdriver.Edge(options=opt)

    # 创建一个可以通过 Selenium 控制的 Microsoft Edge 浏览器实例,并将其赋值给变量 driver
    # driver = webdriver.Edge()

    # 获取url并发送请求
    driver.get("https://pvp.qq.com/web201605/herolist.shtml")

    # time.sleep(3)

    WebDriverWait(driver, 10).until(  # 等待程序运行10s,定位到英雄列表的位置则继续运行,未定位到则报错
        EC.presence_of_element_located((By.XPATH, "//ul[@class='herolist clearfix']"))
    )

    # find_elements获取ul标签下的所有li标签  find_element获取该标签下第一个标签的内容
    li_list = driver.find_elements(By.XPATH, "//ul[@class='herolist clearfix']/li")

    for i in li_list:
        img_url = i.find_element(By.XPATH, "a/img").get_attribute("src")
        name = i.find_element(By.XPATH, "a/img").get_attribute("alt")
        print(img_url, name)

    driver.close()

输出:太多了,就不复制进代码里展示了,获取了所有英雄的图片和名字。

 

 二、前摇

1.导入selenium库

        按win + r打开命令提示符,输入cmd,按回车进入,安装selenium库

        安装不了的可以先给pip换个源,这篇文章开头即有:python-快速上手爬虫-CSDN博客

pip install selenium

 

 2.下载浏览器驱动

        我用的edge的浏览器,所以在这介绍的就是下载edge浏览器的驱动。

打开浏览器设置,点击最下面的关于浏览器,记住浏览器的版本号。

 

搜索edge驱动。

 

点进去,往下翻找到驱动的版本,找到自己浏览器对应的版本下载,安装x64的。

 

下载完之后将文件解压并移至python解释器所在的文件夹,上面的就是浏览器的驱动,下面的是python解释器。如果python解释器下载时环境变量没有配置好的可以看:0基础学python-1:python解释器的安装及环境配置-CSDN博客

 至此,技能前摇已完成。

 

三、爬虫四步走

1.UA伪装

        这一次不用进行UA伪装,虚晃一枪,哈哈哈。实际原因是selenium请求是驱动浏览器自己进行操作,所以不需要UA伪装,但是有一些网站可能还是能检测到。

 

2.获取url

        进入王者荣耀英雄列表的界面,按f12进入检查,刷新页面,然后获取url。

 

先展示一段selenium请求的效果,selenium会驱动浏览器自己去打开给定的url界面。这就意味着我们可以使用这种方式让浏览器自己进行更多的操作。

 

3.发送请求

流水的url,铁打的发送请求。不过这俩可以合并使用。

    # 获取url并发送请求
    driver.get("https://pvp.qq.com/web201605/herolist.shtml")

 

4.获取响应数据进行解析并保存

  • 睡眠三秒是为了等界面渲染完再获取信息,不然界面未渲染完就获取信息,会导致找不到信息,然后报错。
  • WebDriverWait(driver, 10).until 的作用也是如此,前一个参数是等待的程序,后一个是等待的时间。
  • EC.presence_of_element_located里是期望定位到的内容。定位到了就继续运行,未定位或者超出等待时间会报错。
  • selenium里定位标签的方法是By,这里是通过XPATH进行定位,还有其他的参数可以进行定位,例如ID,ClASS_NAME之类的信息。
  • find_elements获取ul标签下的所有li标签 ,find_element获取ul标签下第一个li标签。
  • 然后就是熟悉的遍历li标签取值,在这里不需要用"./"来表示当前目录,而是直接写li标签下的标签。
  • 还有一点不同的是,取标签里的属性这里不使用@属性名,而是用.get_attribute(''属性名'')来进行取值。
  • 最后要关闭这个运行程序,使用.close()进行关闭
    time.sleep(3)

    WebDriverWait(driver, 10).until(  # 等待程序运行10s,定位到英雄列表的位置则继续运行,未定位到则报错
        EC.presence_of_element_located((By.XPATH, "//ul[@class='herolist clearfix']"))
    )

    # find_elements获取ul标签下的所有li标签  find_element获取该标签下第一个标签的内容
    li_list = driver.find_elements(By.XPATH, "//ul[@class='herolist clearfix']/li")

    for i in li_list:
        img_url = i.find_element(By.XPATH, "a/img").get_attribute("src")
        name = i.find_element(By.XPATH, "a/img").get_attribute("alt")
        print(img_url, name)

    driver.close()

 

这样进行操作的时候,浏览器会打开王者荣耀英雄列表的界面,这样会占用一定资源。

那我们可以使用"无头模式"进行操作。更快更有效的利用资源

将这段代码

    # 创建一个可以通过 Selenium 控制的 Microsoft Edge 浏览器实例,并将其赋值给变量 driver
    driver = webdriver.Edge()

替换成这样即可

from selenium.webdriver.edge.options import Options

    # 无头模式
    opt = Options()
    opt.add_argument("--headless")
    driver = webdriver.Edge(options=opt)

 

总结

        博主作为李白十年老玩家,就使用了李白的《行路难》里的一句诗当文章题目。

将进酒,杯莫停!

        这句真的很帅啊!

希望大家使用我这个方法都能成功,如果有什么问题可以私信交流,或者直接在评论区询问即可。一起加油!

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

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

相关文章

萝卜快跑突然就火了,背后发生了什么?

近日,百度旗下的自动驾驶出行平台“萝卜快跑”突然在网络上火了起来,成为热门话题。那么,这背后到底发生了什么? 1. 数字误传引发热议 首先,一些误传的数字在传播中起到了推波助澜的作用。例如,百度在2023…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第三十八章 驱动模块编译进内核

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

PCL 批量处理点云文件

系列文章目录 文章目录 系列文章目录前言一、PCL是什么?二、配置PCL环境三、使用步骤1.引入库2.主函数 总结 前言 点云处理时往往会需要对多个点云进行处理,比如在预处理,保存点云时。下面提供一个简单的点云批量转换例子,PCD文件…

MongoDB 文档存储

安装 下载: Download MongoDB Community Server | MongoDB 说明: 现在基本都安装的是4.4以后的版本。安装完成后使用 mongod 来查看是否安装成功 会输出一堆内容 而如果想要操作数据库,则需要安装一个工具,mongosh-2.2.12-x64.m…

JavaSE从零开始到精通(七) - Stream流

1. 概述 Java 8引入了Stream API,它提供了一种高效且易于使用的处理集合数据的方式。Stream流可以被认为是一种高级的迭代器,允许我们在集合上进行复杂的操作,例如过滤、映射、排序、归约等,而这些操作可以链式调用,形…

C# 开发监控方法执行耗时

MethodTimer.Fody 是一个功能强大的库,可以用于测量 .NET 应用程序中的方法的执行时间。允许你在不修改代码的情况下,自动地测量和记录方法的执行时间。 这个工具是基于.NET的 weaving 技术,通过修改IL(Intermediate Language,中间语言)代码来插入计时逻辑,从而在方法调…

Python内存管理:引用计数与垃圾回收

✨ 内容: 在Python中,内存管理是一个重要且常常被忽视的话题。了解Python如何管理内存,不仅能帮助我们编写高效的代码,还能避免潜在的内存泄漏问题。今天,我们将通过一个实际案例,深入探讨Python的内存管理…

MIT6.824(6.5840) Lab1笔记+源码

文章目录 其他人的内容,笔记写的更好,思路可以去看他们的MapReduceworkermapreduce coordinatorrpc纠错 源码worker.gocoordinator.gorpc.go 原本有可借鉴的部分 mrsequential.go,多看几遍源码 其他人的内容,笔记写的更好&#xf…

如何实现ORACLE19c 安装包DIY

最近一直忙,本想每周有更新的,但老板一句话,就得去干活,想实现这个愿望,看来真的很难,做一天好人容易,要一辈子做好人,难。所以,看到德哥,尹总监,…

言语理解与表达

** 言语理解与表达 1.逻辑填空 2.语句表达 3.阅读理解

MTK 安卓14 launcher3修改桌面模式,替换某些应用图标,以及定制化Hotseat

原生的launcher的Hotseat如下图(1)所示,我想把效果改成图(2) 图(1) 图(2) 一:定制化HotSeat 修改的类:packages/apps/Launcher3/com/android/launcher3/Hotseat.java (1).修改hotseat的宽 Hotseat------->setInsetsOverridepublic void…

Java 22 中的4个永久特性

功能处于孵化或预览阶段是什么意思? 实际上,这是向 Java 编程语言添加新功能的新过程,Java 社区使用这种过程来在 API 和工具处于早期实验阶段时从社区获得反馈(孵化功能)或已经完全指定但尚未永久的阶段(…

ConstraintLayout属性说明

ayout_constraintTop_toTopOf:将某一控件的顶部与另一控件的顶部对齐。 layout_constraintTop_toBottomOf:将某一控件的顶部与另一控件的底部对齐。 layout_constraintBottom_toTopOf:将某一控件的底部与另一控件的顶部对齐。 layout_cons…

3GPP R18 Multi-USIM是怎么回事?(四)

前几篇主要是MUSIM feature NAS 部分内容的总结,这篇开始看RRC部分相关的内容,由于RRC部分内容过长,也分成了2篇。这篇就着重看下musim gap以及RRC触发UE离开RRC Connected mode相关的内容,直入正题, 上面的内容在overview中有提到,对应的是如下38.300中的描述。 处于网络…

【Node.js基础02】fs、path模块

目录 一:fs模块-读写文件 1 加载fs模块对象 2 读制定文件内容文件 3 向文件中写入内容 二:path模块-路径处理 1 问题引入 2 __dirname内置变量 使用方法 一:fs模块-读写文件 fs模块封装了与本机文件系统交互方法和属性 1 加载fs模块…

Win11 改造

记录一些安装 win11 系统之后,对使用不习惯的地方,进行的个人改造 右键菜单 Hiyoung006/Win11Useable: 将Win11右键菜单及资源管理器恢复为Win10样式的脚本 切换到旧版右键菜单: reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34…

Chapter18 基于物理的渲染——Shader入门精要学习

Chapter18 基于物理的渲染 一、PBS理论和数学基础1.光是什么微表面模型 2.渲染方程3.精确光源4.双向反射分布函数 BRDF5.漫反射项(Lambert 模型)Lambertian BRDF为:Disney BRDF中漫反射项 6.高光反射项微面元理论BRDF的高光反射项①菲涅尔反射…

LabVIEW和IQ测试仪进行WiFi测试

介绍一个使用LabVIEW和LitePoint IQxel-MW IQ测试仪进行WiFi测试的系统。包括具体的硬件型号、如何实现通讯、开发中需要注意的事项以及实现的功能。 使用的硬件​ IQ测试仪型号: LitePoint IQxel-MW 电脑: 配置高效的台式机或笔记本电脑 路由器: 支持802.11ax (Wi-Fi 6) 的…

便携气象站:科技助力气象观测

在科技飞速发展的今天,便携气象站以其轻便、高效、全面的特点,正逐渐改变着气象观测的传统模式。这款小巧而强大的设备,不仅为气象学研究和气象灾害预警提供了有力支持,更为户外活动、农业生产等领域带来了诸多便利。 便携气象站是…

遗传算法模型Python代码——用Python实现遗传算法案例

一、遗传算法概述 1.1适用范围 遗传算法(Genetic Algorithm, GA)是一种启发式搜索算法,广泛应用于以下领域: 优化问题:如函数优化、路径规划、资源分配等。机器学习:用于特征选择、超参数优化等。经济与…