iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用selenium+chromedriver+xpath爬取动态加载信息
  • 658
分享到

使用selenium+chromedriver+xpath爬取动态加载信息

2024-04-02 19:04:59 658人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录安装selenium模块说 明selenium模块的使用selenium 模块的常用方法总 结使用selenium实现动态渲染页面的爬取,selenium是浏览器自动化测试框架,

使用selenium实现动态渲染页面的爬取,selenium是浏览器自动化测试框架,是一个用于WEB应用程序测试工具,可以直接运行在浏览器当中,并可以驱动浏览器执行指定的动作,如点击、下拉、填充数据、删除cookie等操作,还可以获取浏览器当前页面的源代码,就像用户在浏览器中操作一样。该工具所支持的浏览器有IE浏览器、Mozilla Firefox以及Google Chrome等。

安装selenium模块

首先打开Anaconda Prompt(Anaconda)命令行窗口,然后输入“pip install selenium“命令(如果没有安装Anaconda, 可以在cmd命令行窗口中执行安装模块的命令),接着按下(回车)键,如下图:

说 明

selenium有很多语言的版本,比如:Java、Ruby、python等。

下载浏览器驱动

selenium模块安装完成以后还需要选择一个浏览器,然后下载对应的浏览器驱动,此时才可以通过selenium模块来控制浏览器的操作。这里选择Chrome浏览器Version 98.0.4758.80 (Official Build) (x86_64),然后在(Http://chromedriver.storage.Googleapis.com/index.html?path=98.0.4758.80/)谷歌浏览器驱动中下载浏览器驱动。如下图:

说 明

在下载谷歌浏览器驱动时,根据自己的电脑系统下载对应的浏览器驱动。

selenium模块的使用

谷歌浏览器驱动下载完成后, 将名称为chromedriver.exe文件拖放到/usr/bin 目录下(Python.exe文件的同级路径)。然后需要通过Python代码进行谷歌浏览器驱动的加载,这样才可以启动浏览器驱动并控制浏览器了。

针对不同浏览器有不同的driver。以下列出不同浏览器及其对应的driver,如下表:

BrowersDriverLink
ChromeChromedriver(.exe)http://chromedriver.storage.googleapis.com/index.html
Internet ExplorerIEDriverServer.exehttp://selenium-release.storage.googleapis.com/index.html
EdgeMicrosoftWebDriver.msihttp://go.microsoft.com/fwlink/?LinkId=619687
Firefoxgeckodriver(.exe)https://GitHub.com/mozilla/geckodriver/releases/
Phantomjsphantomjs(.exe)http://phantomjs.org/
Operaoperadriver(.exe)https://github.com/operasoftware/operachromiumdriver/releases
SafariSafariDriver.safariextzhttp://selenium-release.storage.googleapis.com/index.html

获取京东商品信息,示例代码如下:

#_*_coding:utf-8_*_
# 作者      :liuxiaowei
# 创建时间   :2/7/22 6:43 PM
# 文件      :获取京东商品信息.py
# IDE      :PyCharm

from selenium import webdriver  # 导入浏览器驱动模块
from selenium.webdriver.support.wait import WebDriverWait  # 导入等待类
from selenium.webdriver.support import expected_conditions as EC  # 等待条件
from selenium.webdriver.common.by import By                       # 节点定位

#from selenium.webdriver.chrome.service import Service

try:
    # 创建谷歌浏览器驱动参数对象
    chrome_options = webdriver.ChromeOptions()
    # 不加载图片
    prefs = {"profile.managed_default_content_settings.images": 2}
    chrome_options.add_experimental_option("prefs", prefs)
    # 使用headless无界面浏览器模式
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    # 加载谷歌浏览器驱动
		driver = webdriver.Chrome(options = chrome_options, executable_path='chromedriver')
    # 请求地址
    driver.get('https://item.jd.com/12353915.html')
    wait = WebDriverWait(driver,10)    # 等待10秒
    # 等待页面加载class名称为m-item-inner的节点,该节点中包含商品信息
    wait.until(EC.presence_of_element_located((By.CLASS_NAME,"w")))

    # 获取name节点中所有div节点
    name_div1 = driver.find_element(By.XPATH,'//div[@class="sku-name"]')
    name_div2 = driver.find_element(By.XPATH, '//div[@class="news"]/div[@class="item hide"]')
    name_div3 = driver.find_element(By.XPATH, '//div[@class="p-author"]')
    summary_price = driver.find_element(By.XPATH, '//div[@class="summary-price J-summary-price"]')
    print('提取的商品标题如下:')
    print(name_div1.text)         # 打印商品标题
    print('提取的商品宣传语如下:')
    print(name_div2.text)         # 打印宣传语
    print('提取的编著信息如下:')
    print(name_div3.text)         # 打印编著信息
    print('提取的价格信息如下:')
    print(summary_price.text.strip('降价通知'))       # 打印价格信息
    driver.quit()  # 退出浏览器驱动
except Exception as e:
    print('显示异常信息!', e)

程序运行结果如下:

提取的商品标题如下:
零基础学Python(python3.9全彩版)(编程入门 项目实践 同步视频)
提取的商品宣传语如下:
彩色代码更易学。Python编程从入门到实践书籍,网络爬虫游戏开发数据分析深度学习。赠全程视频+源码+课后题+实物挂图+学习应用地图+电子书+图书答疑
提取的编著信息如下:
明日科技 著
提取的价格信息如下:
京 东 价
¥ 72.00 [9.03折] [定价 ¥79.80] 

selenium 模块的常用方法

selenium 模块支持多种获取网页节点的方法,其中比较常用的方法如下表:

selenium 模块获取网页节点的常用方法及描述

常用方法描 述
driver.find_element_by_id()根据id获取节点,参数为字符类型id对应的值
driver.find_element_by_name()根据name获取节点,参数为字符类型name对应的值
driver.find_element_by_xpath()根据XPATH获取节点,参数为字符类型XPATH对应的值
driver.find_element_by_link_text()根据链接文本获取节点,参数为字符类型链接文本
driver.find_element_by_tag_name()根据节点名称获取节点,参数为字符类型节点文本
driver.find_element_by_class_name()根据class获取节点,参数为字符类型class对应的值
driver.find_element_by_CSS_selector()根据CSS选择器获取节点,参数为字符类型的CSS选择器语法

说 明

上表所有获取节点的方法均为获取单个节点的方法,如需要获取符合条件的多个节点时,可以在对应方法中element后面添加s即可。

除了以上常用的获取节点的方法外,还可以使用driver.find_element()方法获取单个节点,使用driver.find_elements()方法获取多个节点。只是在调用这两种方法时,需要为其指定by与value参数。其中by参数表示获取节点的方式,而value为获取方式对应的值(可以理解为条件)。示例代码如下:

		# 获取商品信息节点中的所有div节点
  	name_div = driver.find_element(By.XPATH,'//div[@class="itemInfo-wrap"]').find_elements(By.TAG_NAME, 'div')

    # 提取并输出单个div节点的内容
    print('提取的商品标题如下:')
    print(name_div[0].text)         # 打印商品标题
    print('提取的商品宣传语如下:')		 # 打印商品宣传语
    print(name_div[1].text)    

程序运行结果如下:

提取的商品标题如下:
零基础学Python(Python3.9全彩版)(编程入门 项目实践 同步视频)
提取的商品宣传语如下:
彩色代码更易学。Python编程从入门到实践书籍,网络爬虫、游戏开发、数据分析等深度学习。赠全程视频+源码+课后题+实物挂图+学习应用地图+电子书+图书答疑
明日科技 著

说 明

以上代码中首先使用find_element()方法获取class值为“itemInfo-warp“的整个节点,然后在该节点中通过find_elements()方法获取节点名称div的所有节点,最后通过name_div[0].text,name_div[1].text获取所有div中第一个第二个div内的文本信息。

下面是By的其他属性及用法

By属性用 法
By.ID表示根据ID值获取对应的单个或多个节点
By.LINK_TEXT表示根据链接文本获取对应的单个或多个节点
By.PARTIAL_LINK_TEXT表示根据部分链接文本获取对应的单个或多个节点
By.NAME根据name值获取对应的单个或多个节点
By.TAG_NAME根据节点名称获取单个或多个节点
By.CLASS_NAME根据class值获取单个或多个节点
By.CSS_SELECTOR根据CSS选择器获取单个或多个节点,对应的value为字符串CSS的位置
By.XPATH根据By.XPATH获取单个或多个节点,对应的value字符串节点位置

在使用selenium模块获取某个节点中的某个属性所对应的值时,可以使用get_attribute()方法来实现,示例代码如下:

# 根据XPath定位获取指定节点中的href地址
href = driver.find_element(By.XPATH, '//div[@id="p-author"]/a').get_attribute('href')
print('指定节点中的地址信息如下:')

程序运行结果如下:

指定节点中的地址信息如下:
https://book.jd.com/writer/%E6%98%8E%E6%97%A5%E7%A7%91%E6%8A%80_1.html

总 结

本案例中需要注意的是加载浏览器驱动,一定要指定chromedriver的路径。语法如下:

 # 加载谷歌浏览器驱动
driver = webdriver.Chrome(options = chrome_options, executable_path='chromedriver')  # 本例驱动与爬虫程序在同一路																																											径

关闭浏览器页面

driver.close():关闭当前页面
driver.quit():退出整个浏览器

到此这篇关于使用selenium+chromedriver+xpath爬取动态加载信息的文章就介绍到这了,更多相关selenium chromedriver xpath爬取内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 使用selenium+chromedriver+xpath爬取动态加载信息

本文链接: https://www.lsjlt.com/news/138713.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用selenium+chromedriver+xpath爬取动态加载信息
    目录安装selenium模块说 明selenium模块的使用selenium 模块的常用方法总 结使用selenium实现动态渲染页面的爬取,selenium是浏览器自动化测试框架,...
    99+
    2024-04-02
  • 如何使用selenium+chromedriver+xpath爬取动态加载信息
    这篇文章主要介绍如何使用selenium+chromedriver+xpath爬取动态加载信息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用selenium实现动态渲染页面的爬取,selenium是浏览器自动化测...
    99+
    2023-06-29
  • Selenium&Chrome实战:动态爬取51job招聘信息
    Selenium3.8版本以后,已经不支持PhanTomJS了,可以使用谷歌,火狐的无头浏览器来代替PhanTomJS使用chrome的无头浏览器,需要下载谷歌驱动chromedriver.exechromedriver.exe下载 &nb...
    99+
    2023-01-30
    招聘信息 实战 动态
  • Python 基于Selenium实现动态网页信息的爬取
    目录一、Selenium介绍与配置1.Selenium简介2. Selenium+Python环境配置二、网页自动化测试1.启动浏览器并打开百度搜索2.定位元素三、爬取动态网页的名人...
    99+
    2024-04-02
  • Python基于Selenium怎么实现动态网页信息的爬取
    这篇文章主要介绍“Python基于Selenium怎么实现动态网页信息的爬取”,在日常操作中,相信很多人在Python基于Selenium怎么实现动态网页信息的爬取问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-22
  • 如何使用SpringSecurity实现动态加载权限信息
    这篇文章主要介绍了如何使用SpringSecurity实现动态加载权限信息,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。①数据库中资源与角色对应关系,以及角色和用户对应关系如...
    99+
    2023-06-22
  • Java使用selenium爬取b站动态的实现方式
    目录seleniummac安装chromedriver完整代码maven依赖完整代码目标:爬取b站用户的动态里面的图片,示例动态 如下所示,我们需要获取这些图片 如图所示,哔哩哔哩...
    99+
    2024-04-02
  • Delphi中怎么动态加载TreeView信息
    在Delphi中,可以使用TTreeNode的AddChild方法来动态加载TreeView信息。以下是一个简单的示例代码: pro...
    99+
    2023-10-21
    Delphi
  • 如何使用python网络爬虫基于selenium爬取斗鱼直播信息
    这篇文章给大家分享的是有关如何使用python网络爬虫基于selenium爬取斗鱼直播信息的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、本文使用的第三方包和工具python 3.8  谷歌...
    99+
    2023-06-29
  • SpringSecurity实现动态加载权限信息的方法
    ①数据库中资源与角色对应关系,以及角色和用户对应关系如下图所示:  ②实现FilterInvocationSecurityMetadataSource类 (1)List&...
    99+
    2024-04-02
  • 详解使用Selenium爬取豆瓣电影前100的爱情片相关信息
    什么是Selenium Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJ...
    99+
    2024-04-02
  • python爬取企查查企业信息之selenium自动模拟登录企查查
    最近接了个小项目需要批量搜索企查查上的相关企业并把指定信息保存到Excel文件中,由于企查查需要登录后才能查看所有搜索到的信息所以第一步需要模拟登录企查查。 python模拟登录企查...
    99+
    2024-04-02
  • 如何使用python爬虫爬取大学排名信息
    这篇文章将为大家详细讲解有关如何使用python爬虫爬取大学排名信息,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 这次爬取的网址请搜索“阿凡题”(纯技术讨论)“阿凡题”(纯技术讨论) 在该网址选择查院校...
    99+
    2023-06-02
  • python项目实战:利用selenium+浏览器爬取淘宝商品信息
    前言今天为大家介绍一个Python利用selenium打开浏览器的方式来爬取淘宝商品的信息,下面就来看看,关于selenium的知识点,是如何做到控制浏览器获取网站的信息导入第三方库...
    99+
    2023-06-02
  • 如何使用node.js爬取在线电瓶车信息
    本篇内容介绍了“如何使用node.js爬取在线电瓶车信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!步骤第一步,引入需要的库var&nbs...
    99+
    2023-07-04
  • 使用Python怎么爬取淘宝的商品信息
    这期内容当中小编将会给大家带来有关使用Python怎么爬取淘宝的商品信息,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy...
    99+
    2023-06-14
  • C++使用宏实现动态库加载
    目录前言一、为什么使用宏1、Windows加载2、Linux加载3、宏加载二、具体实现三、如何使用1、引用头文件2、添加导入宏3、直接调用总结前言 开发的时候,有些项目不能静态链接动...
    99+
    2022-12-16
    C++ 宏 动态库加载 C++动态库加载 C++动态库 C++ 宏 动态库
  • Java爬虫范例之使用Htmlunit爬取学校教务网课程表信息
    使用WebClient和htmlunit实现简易爬虫 import com.gargoylesoftware.htmlunit.WebClient; 提供了public P ...
    99+
    2024-04-02
  • 详解如何使用Python网络爬虫获取招聘信息
    目录前言项目目标项目准备反爬措施项目实现效果展示小结前言 现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部...
    99+
    2024-04-02
  • vue3动态加载组件及动态引入组件怎么使用
    本篇内容介绍了“vue3动态加载组件及动态引入组件怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.问题在做一个用vite构建的vu...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作