0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python网络爬虫Selenium的简单使用

冬至子 来源:宓海 作者:宓海 2023-11-14 14:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Python网络爬虫-Selenium

想要学习爬虫,如果比较详细的了解web开发的前端知识会更加容易上手,时间不够充裕,仅仅了解html的相关知识也是够用的。

准备工作:

使用它肯定先要安装它,对于Selenium的安装推荐使用pip,十分方便。因为我使用的是谷歌浏览器,使用前需要先配置相应的ChromeDriver,在此放出对应谷歌浏览器对应的80版本的ChromeDriver。地址 :点击下载提取码:sz2s
至于如何去安装配置,网络上有很多教程,在此不做赘述。

简要功能:

使用Selenium可以驱动浏览器执行特定操作,如点击,下拉等等,同时也能直接抓取网页源代码,即做到可见即可爬。

1.访问页面

通过下面这几行代码可以实现浏览器的驱动并获取网页源码,非常便捷。

from selenium import webdriver

browser = webdriver.Chrome()  #声明浏览器对象
browser.get('https://www.baidu.com')
print(browser.page_source)  #打印网页源码
browser.close()			#关闭浏览器

2.查找节点

selenium可以驱动浏览器完成各种操作,但进行模拟点击,填写表单时,我们总要知道这些输入框,点击按钮在哪里,所以需要获取相对的节点。总共有其中寻找节点的方法,在此给出一个非常全面的学习查找节点的教程。

=单个节点=
下面以百度首页为例。通过查找源码,我们可以发现对应搜索文本框的class,name,id等属性名。

图片

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
input = browser.find_element_by_id('kw')		#获取搜索框位置
input.send_keys('Python')    	#输入内容

运行代码得到如下内容,此时我们只是输入,并未进行其他操作。

图片

=多个节点=

如果查找目标在网页中只有一个,使用find_element()方法就可了。如果有多个,举个例子,如查找多个满足条件的节点,通过html基本知识我们可以知道元素对应的id名是唯一的,像是其他的class等可以多次出现,其中对应的满足条件的倘若还用一开始的方法便只能得到第一个节点的内容,后面就不能得到,因此可以使用find_elements()。

3.节点交互

意思就是让浏览器模拟执行一些动作,常用的有:输入文字用send_keys(),清空文字用clear(),点击用click()。放个小实例。

from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
input = browser.find_element_by_id('kw')
input.send_keys('Python')
time.sleep(1)		#等待时间设置为1秒,方便查看
input.clear()		#清空搜索框
input.send_keys('LOL')
button = browser.find_element_by_id('su')
button.click()		#模拟点击

4.获取节点信息

因为selenium的page_source属性可以直接获取网页源码,接着就可以直接使用解析库(如正则表达式,Beautiful Soup等)直接提取信息,不过Selenium已经直接提供了选择节点的方法了,返回的是WebElement类型,它也有相关的方法提取节点信息,如文本,属性等。这也是使用它进行一点简单的爬虫非常方便的原因,代码十分简洁。

=提取属性=

使用get_attribute()方法,但前提需要先选中节点,同样以百度首页为实例,打印出百度logo的属性。

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
input = browser.find_element_by_id('s_lg_img')
print(input)
print(input.get_attribute("class"))

'''打印结果
< selenium.webdriver.remote.webelement.WebElement (session="6013549f22f653cf081e0564da8315da", element="a924de49-358c-42e1-8c29-09bf0dd8d3c3") >
index-logo-src
'''

=获取文本值=

每个WebElement节点都有text属性,直接调用这个属性就可以获得节点内的内容,这相当于Beautiful Soup中的get_text()方法。这里打开百度首页,获取搜索按钮的百度一下文本。

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
input = browser.find_element_by_id('su')
print(input.text)

=获取id、位置、标签名和大小=

id属性获取节点id
location属性可以获取该节点在页面中的相对位置
tag_name属性获取标签名称
size属性获取节点大小,就是宽高

5.延时等待

当我们进行网络爬虫时,请求的东西或许不会第一时间出现,此时就会抛出时间异常,因此我们需要加上延时等待避免程序中断。这里面分为显式等待和隐式等待,具体详细教程参考链接: link.

6.异常处理

进行爬虫难免会遇到异常,如超时,节点未找到等错误,此时用try except语句捕获异常,可以避免程序因此中断。

关于Selenium其他的函数如对网页节点进行拖拽,切换标签页,前进与后退,选项卡管理以及对cookies相关的操作等不做详细说明,上面的知识足以进行简单的爬虫了,像是各大网页的文本值都可以很简单的抓取下来,可以做一点简单的数据分析。当然这仅对初学者是这样的,后期稍微深入会遇到需要这些函数的操作,对于小白这些就够了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    59

    文章

    4892

    浏览量

    90415
  • 异常中断
    +关注

    关注

    0

    文章

    10

    浏览量

    1408
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AI算法核心知识清单(深度实战版4)

    Scrapy+Selenium)、公开数据集下载(如ImageNet、COCO)文本数据:网页爬虫(如BeautifulSoup爬取新闻、博客)、社交媒体API(如Twi
    的头像 发表于 04-30 09:22 312次阅读
    AI算法核心知识清单(深度实战版4)

    Python全栈一课通(470集)(12.96 GB)-网盘资源下载

    爬虫是对网络通信与反爬策略的实战;自动化则是对操作系统底层交互的掌控。这些技能看似散落,实则都扎根于 Python 的底层生态。这种“全栈”能力构建了一张互相交织的技能网,无论技术风口如何转变,你都能
    发表于 04-19 16:30

    使用Python/MyHDL创建自定义FPGA IP

    使用 Python/MyHDL 创建自定义 FPGA IP,与 Vivado 集成,并通过 PYNQ 进行控制——实现软件上的简单硬件设计。
    的头像 发表于 04-09 09:53 467次阅读
    使用<b class='flag-5'>Python</b>/MyHDL创建自定义FPGA IP

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    Fusion的简单方法。在本示例中,我们将演示如何使用Python脚本运行光学仿真,以向用户简要概述这种跨平台的仿真能力。 用例概览 文件路径 用户可以在样本文件的文件夹中找到所有文件。包含这些文件
    发表于 03-31 09:39

    京东关键词搜索商品列表的Python爬虫实战

    京东关键词搜索商品列表 Python 爬虫实战 你想要实现京东关键词搜索商品的爬虫,我会从 合规声明、环境准备、页面分析、代码实现、反爬优化 五个方面展开,帮助你完成实战项目。 一、前置声明(重要
    的头像 发表于 01-04 10:16 1582次阅读

    没有专利的opencv-python 版本

    4.8.x 及以上核心版(无专利、安装简单、功能全); 若需扩展功能,搭配 opencv-contrib-python-headless(无头版),避免引入专利模块; 无需担心“专利绕过”,官方核心版本身无
    发表于 12-13 12:37

    # 深度解析:爬虫技术获取淘宝商品详情并封装为API的全流程应用

    需求。本文将深入探讨如何借助爬虫技术实现淘宝商品详情的获取,并将其高效封装为API。 一、爬虫技术核心原理与工具 1.1 爬虫运行机制 网络爬虫
    的头像 发表于 11-17 09:29 550次阅读

    Python 给 Amazon 做“全身 CT”——可量产、可扩展的商品详情爬虫实战

    一、技术选型:为什么选 Python 而不是 Java? 结论: “调研阶段用 Python,上线后如果 QPS 爆表再考虑 Java 重构。” 二、整体架构速览(3 分钟看懂) 三、开发前准备(5
    的头像 发表于 10-21 16:59 669次阅读
    用 <b class='flag-5'>Python</b> 给 Amazon 做“全身 CT”——可量产、可扩展的商品详情<b class='flag-5'>爬虫</b>实战

    从 0 到 1:用 PHP 爬虫优雅地拿下京东商品详情

    PHP 语言 实现一个 可运行的京东商品爬虫 ,不仅能抓取商品标题、价格、图片、评价数,还能应对常见的反爬策略。全文附完整代码, 复制粘贴即可运行 。 一、为什么选择 PHP 做爬虫? 虽然 Python
    的头像 发表于 09-23 16:42 1137次阅读
    从 0 到 1:用 PHP <b class='flag-5'>爬虫</b>优雅地拿下京东商品详情

    Nginx限流与防爬虫配置方案

    在互联网业务快速发展的今天,网站面临着各种流量冲击和恶意爬虫的威胁。作为运维工程师,我们需要在保证正常用户访问的同时,有效防范恶意流量和爬虫攻击。本文将深入探讨基于Nginx的限流与防爬虫解决方案,从原理到实践,为大家提供一套完
    的头像 发表于 09-09 15:52 1154次阅读

    termux调试python猜数字游戏

    用termux做一个猜数字游戏 下面是在Termux中创建猜数字游戏的步骤及完整实现方案,结合Python实现(最适配Termux环境): ? 一、环境准备(Termux基础配置) 1.
    发表于 08-29 17:15

    termux如何搭建python游戏

    termux如何搭建python游戏 Termux搭建Python游戏开发环境的完整指南 一、Termux基础环境准备 Termux是一款无需root即可在安卓设备上运行的Linux终端
    发表于 08-29 07:06

    自动化测试如何绕过Cloudflare验证码?Python + Selenium 脚本实战指南!

    01什么是Cloudflare验证码Cloudflare提供网络工具,并提供一套全面的安全功能,以保护网站免受各种在线威胁。Cloudflare验证码是一种用于区分人类用户和自动化机器人的功能。它是
    的头像 发表于 08-15 10:01 1752次阅读
    自动化测试如何绕过Cloudflare验证码?<b class='flag-5'>Python</b> + <b class='flag-5'>Selenium</b> 脚本实战指南!

    python app不能运行怎么解决?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    发表于 08-06 06:27

    基于FPGA搭建神经网络的步骤解析

    本文的目的是在一个神经网络已经通过python或者MATLAB训练好的神经网络模型,将训练好的模型的权重和偏置文件以TXT文件格式导出,然后通过python程序将txt文件转化为coe
    的头像 发表于 06-03 15:51 1593次阅读
    基于FPGA搭建神经<b class='flag-5'>网络</b>的步骤解析