当前位置: 首页 > news >正文

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

目录

前言

将进酒,杯莫停!

一、浇给

 

 二、前摇

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 Optionsif __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 浏览器实例,并将其赋值给变量 driverdriver = webdriver.Edge()

替换成这样即可

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

 

总结

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

将进酒,杯莫停!

        这句真的很帅啊!

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

相关文章:

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

目录 前言 将进酒,杯莫停! 一、浇给 二、前摇 1.导入selenium库 2.下载浏览器驱动 三、爬虫四步走 1.UA伪装 2.获取url 3.发送请求 4.获取响应数据进行解析并保存 总结 前言 博主身为一个农批,当然要尝试爬取王者荣耀的东西啦。 将进…...

AGI 之 【Hugging Face】 的【从零训练Transformer模型】之二 [ 从零训练一个模型 ] 的简单整理

AGI 之 【Hugging Face】 的【从零训练Transformer模型】之二 [ 从零训练一个模型 ] 的简单整理 目录 AGI 之 【Hugging Face】 的【从零训练Transformer模型】之二 [ 从零训练一个模型 ] 的简单整理 一、简单介绍 二、Transformer 1、模型架构 2、应用场景 3、Hugging …...

十大排序的稳定性和时间复杂度

十大排序算法的稳定性和时间复杂度是数据结构和算法中的重要内容。 以下是对这些算法的稳定性和时间复杂度的详细分析: 稳定性 稳定性指的是排序算法在排序过程中是否能够保持相等元素的原始相对顺序。根据这个定义,我们可以将排序算法分为稳定排序和…...

【系列教程之】1、点亮一个LED灯

1、点亮一个LED灯 作者将狼才鲸创建日期2024-07-23 CSDN教程目录地址:【目录】8051汇编与C语言系列教程本Gitee仓库原始地址:才鲸嵌入式/8051_c51_单片机从汇编到C_从Boot到应用实践教程 本源码包含C语言和汇编工程,能直接在电脑中通过Keil…...

搜维尔科技:Manus Metagloves使用精确的量子跟踪技术捕捉手部每一个细节动作

Manus Metagloves使用精确的量子跟踪技术捕捉手部每一个细节动作 搜维尔科技:Manus Metagloves使用精确的量子跟踪技术捕捉手部每一个细节动作...

机器学习 | 阿里云安全恶意程序检测

目录 一、数据探索1.1 数据说明1.2 训练集数据探索1.2.1 数据特征类型1.2.2 数据分布1.2.3 缺失值1.2.4 异常值1.2.5 标签分布探索 1.3 测试集探索1.3.1 数据信息1.3.2 缺失值1.3.3 数据分布1.3.4 异常值 1.4 数据集联合分析1.4.1 file_id 分析1.4.2 API 分析 二、特征工程与基…...

python打包exe文件-实现记录

1、使用pyinstaller库 安装库: pip install pyinstaller打包命令标注主入库程序: pyinstaller -F.\程序入口文件.py 出现了一个问题就是我在打包运行之后会出现有一些插件没有被打包。 解决问题: 通过添加--hidden-importcomtypes.strea…...

基本的DQL语句-单表查询

一、DQL语言 DQL(Data Query Language 数据查询语言)。用途是查询数据库数据,如SELECT语句。是SQL语句 中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多 表联查。 注意:所有的查询…...

Vue3 对比 Vue2

相关信息简介2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王) 2 年多开发, 100位贡献者, 2600次提交, 600次 PR、30个RFC Vue3 支持 vue2 的大多数特性 可以更好的支持 Typescript,提供了完整的…...

2024中国大学生算法设计超级联赛(1)

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,彩笔ACMer一枚。 🏀所属专栏:杭电多校集训 本文用于记录回顾总结解题思路便于加深理解。 📢📢📢传送门 A - 循环位移解…...

offer题目51:数组中的逆序对

题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如,在数组{7,5,6,4}中,一共存在5个逆序对,分别是(7…...

45、PHP 实现滑动窗口的最大值

题目: PHP 实现滑动窗口的最大值 描述: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。 例如: 如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3, 那么一共存在6个滑动窗口, 他们的最大值…...

【计算机视觉】siamfc论文复现实现目标追踪

什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置),来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中&#xff0…...

数学建模学习(111):改进遗传算法(引入模拟退火、轮盘赌和网格搜索)求解JSP问题

文章目录 一、车间调度问题1.1目前处理方法1.2简单案例 二、基于改进遗传算法求解车间调度2.1车间调度背景介绍2.2遗传算法介绍2.2.1基本流程2.2.2遗传算法的基本操作和公式2.2.3遗传算法的优势2.2.4遗传算法的不足 2.3讲解本文思路及代码2.4算法执行结果: 三、本文…...

Golang | Leetcode Golang题解之第241题为运算表达式设计优先级

题目&#xff1a; 题解&#xff1a; const addition, subtraction, multiplication -1, -2, -3func diffWaysToCompute(expression string) []int {ops : []int{}for i, n : 0, len(expression); i < n; {if unicode.IsDigit(rune(expression[i])) {x : 0for ; i < n &…...

Unity客户端接入原生Google支付

Unity客户端接入原生Google支付 1. Google后台配置2. 开始接入Java部分C#部分Lua部分 3. 导出工程打包测试参考踩坑注意 1. Google后台配置 找到内部测试&#xff08;这个测试轨道过审最快&#xff09;&#xff0c;打包上传&#xff0c;这个包不需要接入支付&#xff0c;如果已…...

Spring Cloud之五大组件

Spring Cloud 是一系列框架的有序集合&#xff0c;为开发者提供了快速构建分布式系统的工具。这些组件可以帮助开发者做服务发现&#xff0c;配置管理&#xff0c;负载均衡&#xff0c;断路器&#xff0c;智能路由&#xff0c;微代理&#xff0c;控制总线等。以下是 Spring Cl…...

在 CentOS 7 上安装 Docker 并安装和部署 .NET Core 3.1

1. 安装 Docker 步骤 1.1&#xff1a;更新包索引并安装依赖包 先安装yum的扩展&#xff0c;yum-utils提供了一些额外的工具&#xff0c;这些工具可以执行比基本yum命令更复杂的任务 sudo yum install -y yum-utils sudo yum update -y #更新系统上已安装的所有软件包到最新…...

redis的学习(一):下载安装启动连接

简介 redis的下载&#xff0c;安装&#xff0c;启动&#xff0c;连接使用 nosql nosql&#xff0c;即非关系型数据库&#xff0c;和传统的关系型数据库的对比&#xff1a; sqlnosql数据结构结构化非结构化数据关联关联的非关联的查询方式sql查询非sql查询事务特性acidbase存…...

前端设计模式面试题汇总

面试题 1. 简述对网站重构的理解&#xff1f; 参考回答&#xff1a; 网站重构&#xff1a;在不改变外部行为的前提下&#xff0c;简化结构、添加可读性&#xff0c;而在网站前端保持一致的行为。也就是说是在不改变UI的情况下&#xff0c;对网站进行优化&#xff0c; 在扩展的…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...