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
    +关注

    关注

    57

    文章

    4857

    浏览量

    89585
  • 异常中断
    +关注

    关注

    0

    文章

    9

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

    Nginx限流与防爬虫配置方案

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

    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

    python入门圣经-高清电子书(建议下载)

    和Pygal 等强大的Python 库和工具介绍,以及列表、字典、if 语句、类、文件与异常、代码测试等内容; 第二部分将理论付诸实践,讲解如何开发三个项目,包括简单Python 2D 游戏开发如何利用数据
    发表于 04-10 16:53

    零基础入门:如何在树莓派上编写和运行Python程序?

    在这篇文章中,我将为你简要介绍Python程序是什么、Python程序可以用来做什么,以及如何在RaspberryPi上编写和运行一个简单Python程序。什么是
    的头像 发表于 03-25 09:27 1524次阅读
    零基础入门:如何在树莓派上编写和运行<b class='flag-5'>Python</b>程序?

    爬虫数据获取实战指南:从入门到高效采集

    爬虫数据获取实战指南:从入门到高效采集     在数字化浪潮中,数据已成为驱动商业增长的核心引擎。无论是市场趋势洞察、竞品动态追踪,还是用户行为分析,爬虫技术都能助你快速捕获目标信息。然而,如何既
    的头像 发表于 03-24 14:08 1256次阅读

    爱立信如何让网络运维更简单

    在爱立信“可编程网络”这一创新概念里,差异化连接、AI赋能和意图驱动、网络能力开放作为三大基石,各司其职,让网络更智能、更灵活、更开放。本期《信观察》,爱立信专家将从AI赋能和意图驱动的概念和功能入手,与您分享爱立信如何“让
    的头像 发表于 03-03 09:27 1w次阅读

    Python绘图Matplotlib快速参考手册

     PYTHON
    发表于 02-07 14:04 0次下载

    深度学习入门:简单神经网络的构建与实现

    深度学习中,神经网络是核心模型。今天我们用 Python 和 NumPy 构建一个简单的神经网络。 神经网络由多个神经元组成,神经元之间通过
    的头像 发表于 01-23 13:52 842次阅读

    使用Python实现xgboost教程

    使用Python实现XGBoost模型通常涉及以下几个步骤:数据准备、模型训练、模型评估和模型预测。以下是一个详细的教程,指导你如何在Python中使用XGBoost。 1. 安装XGBoost
    的头像 发表于 01-19 11:21 2214次阅读

    华为云 Flexus X 实例下的场景体验——小企业使用 Python 语言——超迅速搭建简单公网 API 接口服务

      前言 小企业为了快速搞定一些接口功能如果不使用 Python 的话相对来说复杂度还是很高的,这里我来通过【华为云 Flexus X 实例】来迅速的搭建一个 Python 的 WebApi 示例
    的头像 发表于 12-27 13:46 855次阅读
    华为云 Flexus X 实例下的场景体验——小企业使用 <b class='flag-5'>Python</b> 语言——超迅速搭建<b class='flag-5'>简单</b>公网 API 接口服务

    IP地址数据信息和爬虫拦截的关联

    IP地址数据信息和爬虫拦截的关联主要涉及到两方面的内容,也就是数据信息和爬虫。IP 地址数据信息的内容丰富,包括所属地域、所属网络运营商、访问时间序列、访问频率等。 从IP地址信息中可以窥见
    的头像 发表于 12-23 10:13 678次阅读