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

    关注

    51

    文章

    4677

    浏览量

    83473
  • 异常中断
    +关注

    关注

    0

    文章

    8

    浏览量

    1179
收藏 人收藏

    评论

    相关推荐

    如何解决Python爬虫中文乱码问题?Python爬虫中文乱码的解决方法

    如何解决Python爬虫中文乱码问题?Python爬虫中文乱码的解决方法 在Python爬虫过程
    的头像 发表于 01-12 15:11 504次阅读

    爬虫的基本工作原理 用Scrapy实现一个简单爬虫

    数以万亿的网页通过链接构成了互联网,爬虫的工作就是从这数以万亿的网页中爬取需要的网页,从网页中采集内容并形成结构化的数据。
    的头像 发表于 12-03 11:45 485次阅读
    <b class='flag-5'>爬虫</b>的基本工作原理 用Scrapy实现一个<b class='flag-5'>简单</b>的<b class='flag-5'>爬虫</b>

    python软件怎么运行代码

    Python是一种高级编程语言,它被广泛用于开发各种类型的应用程序,从简单的脚本到复杂的网络应用和机器学习模型。要运行Python代码,您需要一个P
    的头像 发表于 11-28 16:02 542次阅读

    python简单for循环例子

    Python是一种简单而又强大的编程语言,通过其清晰的语法和丰富的功能库,我们可以实现各种各样的任务。其中一个最基本的语法结构就是for循环,让我们来看一下如何使用for循环来编写一个最简单的例子
    的头像 发表于 11-21 14:53 495次阅读

    Python中使用selenium的准备工作

    定义 Selenium是一个用于Web应用程序测试的自动化测试工具。使用Selenium可以驱动浏览器执行特定的动作,如点击、下拉等操作,还可以获取页面信息,断言页面是否如预期。在工作中我们可以用
    的头像 发表于 11-15 11:12 193次阅读
    <b class='flag-5'>Python</b>中使用<b class='flag-5'>selenium</b>的准备工作

    如何看待Python爬虫的合法性?

    Python爬虫是一种自动化程序,可以从互联网上获取信息并提取数据。通过模拟网页浏览器的行为,爬虫可以访问网页、抓取数据、解析内容,并将其保存到本地或用于进一步分析
    的头像 发表于 11-14 10:35 250次阅读

    Python 一个超快的公共情报搜集爬虫

    Photon是一个由s0md3v开源的情报搜集爬虫,其主要功能有: 1.爬取链接(内链、外链)。 2.爬取带参数的链接,如(pythondict.com/test?id=2)。 3.文件(pdf
    的头像 发表于 11-03 15:16 294次阅读
    <b class='flag-5'>Python</b> 一个超快的公共情报搜集<b class='flag-5'>爬虫</b>

    crawlerdetect:Python 三行代码检测爬虫

    是否担心高频率爬虫导致网站瘫痪? 别担心,现在有一个Python写的神器——crawlerdetect,帮助你检测爬虫,保障网站的正常运转。 1.准备 开始之前,你要确保Python
    的头像 发表于 11-02 11:31 292次阅读

    feapder:一款功能强大的爬虫框架

    今天推荐一款更加简单、轻量级,且功能强大的爬虫框架:feapder 项目地址: https://github.com/Boris-code/feapder 2. 介绍及安装 和 Scrapy 类似
    的头像 发表于 11-01 09:48 640次阅读

    Python调用JS的 4 种方式

    1. 前言 日常 Web 端爬虫过程中,经常会遇到参数被加密的场景,因此,我们需要分析网页源代码 通过调式,一层层剥离出关键的 JS 代码,使用 Python 去执行这段代码,得出参数加密前后
    的头像 发表于 10-30 09:41 309次阅读

    网络爬虫 Python和数据分析

    网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的
    发表于 09-25 08:25

    不可错过!人工神经网络算法、PID算法、Python人工智能学习等资料包分享(附源代码)

    3.Python人工智能学习工具包+入门与实践资料集锦 本资料的主要内容详细介绍的是Python工具包合集包括了:网页爬虫工具集,文本处理工具集,Python科学计算工具包,
    发表于 09-13 16:41

    Radview--Selenium网站性能测试

    WebLOAD与Selenium(用于Web浏览器应用程序的开源测试工具)的集成,使您可以将执行真实活动的真实Web浏览器集成到性能测试方案中,并准确地识别问题。
    的头像 发表于 08-31 10:58 327次阅读
    Radview--<b class='flag-5'>Selenium</b>网站性能测试

    卷积神经网络python代码

    卷积神经网络python代码 ; 卷积神经网络(Convolutional Neural Network,简称CNN)是一种可以在图像处理和语音识别等领域中很好地应用的神经网络。它的原
    的头像 发表于 08-21 16:41 691次阅读