〖Python网络爬虫实战㉗〗- Selenium案例实战(一)

news/2025/2/14 3:50:09/
  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+ 

                python项目实战

                Python编程基础教程系列(零基础小白搬砖逆袭)

  • 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,可报销(名额有限,先到先得)

        即将转为付费专栏,更多详细请看,五一或有优惠活动哦。

关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明

  • 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。

 最近更新

〖Python网络爬虫实战㉖〗- Selenium库和ChromeDriver驱动的安装

🌟上节回顾

我们在前面讲解了正确安装好Chrome 浏览器并配置好ChromeDriver。另外,还教大家如何正确安装好 Python 的 Selenium 库。


⭐️Selenium案例实战(一)

今天,我们就用python爬取商品信息,我们这里使用selenium去模拟获取我们的数据。

🌟环境使用

  • python 3.9
  • pycharm

🌟模块使用

  • requests
  • selenium
  • time
  • 谷歌驱动

🌟说明

✨一、谷歌驱动安装

1.下载网址

CNPM Binaries Mirror

2.文件安装(放置)位置

可以把这个文件理解成一个脚本入口。说它是安装,其实就是把下载的 chromedriver.exe 文件复制到相应的位置。

将文件复制到两个位置:1...\python\Scripts复制一份到安装Python的文件夹中的Scripts文件夹中;2.如果用的是Pycharm,再复制一份到..\python\site-packages\selenium\webdriver\chrome文件中。这个地址可以将鼠标放在Pycharm里面安装库的地方的相应库上就能看到。

✨二、selenium模块

        之前,我们爬虫是模拟浏览器,但始终不是用的浏览器,但今天我们要说的是另一种爬虫方式,这次不是模拟浏览器,而是用程序去控制浏览器进行一些列操作,也就是selenium。selenium是python的一个第三方库,对外提供的接口可以操控浏览器,比如说输入、点击,跳转,下拉等动作。

  在使用selenium模块之前要做两件事,一是安装selenium模块,可以用终端用pip,也可以在pycharm里的setting安装;二是我们需要下载一款浏览器驱动程序,下载的驱动程序要和浏览器的版本一致。

 🌟代码实现

首先,我们模拟打开我们想要的网址,这里是某东的首页。

driver = webdriver.Chrome()driver.get('https://www.jd.com/')

有的大家运行会闪退,大家在调试模式下运行,就把不会闪退,或者加一句input()。接下来,我们模拟键盘输入笔记本。我们看看代码怎么运行。

    #     定位搜索框# input_tag = driver.find_element(By.ID,value="key")input_tag = driver.find_element(By.ID, "key")input_tag.send_keys('笔记本')  # 模拟键盘输入driver.implicitly_wait(5) # 隐式等待

 接下来,就是模拟键盘的回车按键,我们看看selenium是怎么实现的。

input_tag.send_keys(Keys.ENTER)  # 模拟回车

接下来,就是获取我们商品页的商品信息。

goods = driver.find_elements(By.CLASS_NAME, "gl-item")

这个代码片段将会返回网页中所有 "gl-item" 类名的 HTML 元素。后面的就不一样解释了。

    for good in goods:# 名字name = good.find_element(By.CSS_SELECTOR, ".p-name").text.replace('\n', '')print(name)# 价格price = good.find_element(By.CSS_SELECTOR, ".p-price").textlink = good.find_element(By.TAG_NAME, "a").get_attribute('href')msg = '''商品:%s价格:%s链接:%s''' % (name, price, link)print(msg)

这个代码片段将会打印出商品的名称、价格和链接。您可以根据需要修改代码以满足您的具体需求。

首先,它会找到商品的 HTML 元素,然后使用 find_element 方法找到 ".p-name" 和 ".p-price" 类名的元素,并提取它们的文本。接下来,它会找到所有 "a" 标签,并从它们的 href 属性中提取链接。最后,它会将商品名称、价格和链接格式化为一个字符串,并打印出来。

全部代码如下:


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import timedriver = webdriver.Chrome()
# r'C:\Users\YY\AppData\Local\Programs\Python\Python39\chromedriver.exe'
driver.get('https://www.jd.com/')def GetInfo():input_tag = driver.find_element(By.ID, "key")input_tag.send_keys('笔记本') time.sleep(5)input_tag.send_keys(Keys.ENTER)spider_jd()def spider_jd():goods = driver.find_elements(By.CLASS_NAME,"gl-item")for good in goods:name = good.find_element(By.CSS_SELECTOR,".p-name").text.replace('\n','')price = good.find_element(By.CSS_SELECTOR,".p-price").textlink = good.find_element(By.TAG_NAME,"a").get_attribute('href')msg = '''商品:%s价格:%s链接:%s'''%(name,price,link)print(msg)# GetInfo()for page in range(1,11):print(f'爬取{page}页')GetInfo()driver.find_element(By.CSS_SELECTOR,'.pn-next').click()time.sleep(2)

🌟运行结果

f1292d4500b34b598e9076a5d430091e.png

大家注意,这里会有一些语法的问题,博主这里是最新版的selenium。大家如果报错的话,更新自己的selenium库。

      替换所有的  ".find_element_by_xpath("   为                   ".find_element(By.XPATH,"替换所有的  ".find_elements_by_xpath("   为  ".find_elements(By.XPATH,"

🌟总结

后面,我还会将两个这样的案例,我们通过实战来了解selenium的好处。这里,我推荐大家使用新版本的selenium,旧版本的不是说不能用,看个人习惯吧。 


http://www.ppmy.cn/news/72662.html

相关文章

国内外数据安全治理框架介绍与分析

本文将介绍和分析:微软 DGPC框架,Gartner 数据安全治理框架 DSG,数据安全能力成熟度模型 DSMM 数据治理与数据安全治理系列文章 https://luozhonghua.blog.csdn.net/article/details/130417106 数据安全治理流程设计_luozhonghua2000的博客-CSDN博客 数据治理解决之道探讨…

Aixcoder:AI辅助编程工具

【产品介绍】 aixcoder是一款基于深度学习人工智能技术的AI辅助编程工具。提供了一个由各个领域的专业代码训练出来的“虚拟编程专家”,通过与aixcoder进行结对编程,程序员可以感受到工作效率的显著提升。 借助aixcoder的帮助,程序员可以摆脱…

测试理论----Bug的严重程度(Severity)和优先级(Priority)的分类

【原文链接】测试理论----Bug的严重程度(Severity)和优先级(Priority)的分类 一、Bug的严重程度(Severity) Bug的Severity(严重程度)指的是一个Bug对软件系统功能影响的程度&#…

JavaScript如何实现上拉加载,下拉刷新?

一、前言 下拉刷新和上拉加载这两种交互方式通常出现在移动端中。本质上等同于PC网页中的分页,只是交互形式不同。开源社区也有很多优秀的解决方案,如iscroll、better-scroll、pulltorefresh.js库等等。这些第三方库使用起来非常便捷。我们通过原生的方式…

Java ArrayList

Java ArrayList 目录 Java ArrayList 添加元素 实例 访问元素 实例 修改元素 实例 删除元素 实例 计算大小 实例 迭代数组列表 实例 实例 其他的引用类型 实例 ArrayList 排序 实例 实例 Java ArrayList 方法 正在上传…重新上传取消 Java 集合框架 Arra…

【Linux】7. 进程概念

在进程的学习之前首先需要理解并掌握冯诺依曼体系结构及操作系统的相关概念 1. 冯诺依曼体系结构 最终我们得到的结论是: 在数据层面上 CPU不与外部设备进行交互,而是直接和内存交互所有的外部设备需要数据载入,只能载入到内存中。数据从内…

Spring中的 DI 原理及源码解析

前言 Spring是一个强大的应用程序开发框架,它为企业应用程序提供了许多好处。其中一个主要特性就是IoC(控制反转)和DI(依赖注入)。本文将重点介绍Spring中的DI原理以及相关源码解析。 DI的定义 依赖注入(D…

文件系统挂载

文件系统挂载 问题claude解决 问题 1.414066] piix4_smbus 0000:00:07.3: SMBus Host Controller not enabled! /dev/sda3: recovering journal /dev/sda3: clean, 287571/1277952 files, 4720254/5110784 blocks [ 2.553460] systemd[1]: Failed to mount /. host:. [ FAILED…