首页 > 编程语言 >python 使用selenium 获取js渲染后的页面信息

python 使用selenium 获取js渲染后的页面信息

时间:2023-09-25 11:33:59浏览次数:35  
标签:name python selenium element options js find

一、介绍

二、代码

三、问题

 

一、介绍

  现在的网站以及页面,一般都是js动态渲染,抓到的信息就与实际不符,所以需要加载js的工具,这里使用的就是selenium

  Selenium 是一个用于自动化测试的工具,可以模拟浏览器的行为来执行各种操作。在爬虫中,我们可以使用 Selenium 对网页进行模拟操作,以便获取动态渲染的页面内容。

二、代码

  1.安装selenium

pip install selenium

  2.配置webdriver

  先查看chrome版本,下面操作有可能触发自动更新,看之前先关闭自动更新功能

  进入webdrive页面, 找到对应版本, 地址:跳过去

  如果你的chrome 版本太高,请回退并关闭自动更新功能,不然可以不适配,有未知错误的风险。

  选择对应系统下载,放到python script 文件夹下面

 

  关闭自动更新网上很多,可以自行搜索,以下打个样:

  

关闭服务

 

  3.代码使用

  

def test2():

    options = webdriver.ChromeOptions()
    # 使用无头浏览器,就是没界面产生
    options.add_argument('--headless')
    # 关闭GPU渲染
    options.add_argument('--disable-gpu')
    driver = webdriver.Chrome(options=options)
    # 请求url
    driver.get('https://www.douyin.com/video/7279978850438761780')
    # 打印出网页的title
    print(driver.title)
    # 等待js执行渲染下,根据实际情况调整
    time.sleep(2)
    """
    find_element_by_id()
    find_element_by_name()
    find_element_by_xpath()
    find_element_by_link_text()
    find_element_by_partial_link_text()
    find_element_by_tag_name()
    find_element_by_class_name()
    find_element_by_css_selector()
    """
    # 通用搜索方法
    """
    class By:
        ID = "id"
        XPATH = "xpath"
        LINK_TEXT = "link text"
        PARTIAL_LINK_TEXT = "partial link text"
        NAME = "name"
        TAG_NAME = "tag name"
        CLASS_NAME = "class name"
        CSS_SELECTOR = "css selector"
    """
    
    data = driver.find_elements(By.CSS_SELECTOR, ".xg-video-container > video > source")
    if len(data) > 0:
        print(data[2].get_attribute('src'))
    print(data)
    # 关闭浏览器
    driver.quit()

三、问题

 

标签:name,python,selenium,element,options,js,find
From: https://www.cnblogs.com/nobody-/p/17727556.html

相关文章

  • Python dataclass 如何让传入的 field 为 None 时自动转化为默认值?
    一般dataclass的字段可以设置default或default_factory生成默认值,当传入参数时,默认值不会生效。但是,有些情况下受限于外部调用环境,某些参数缺失时,以None的形式存在,而非创建dataclass实例时不传入参数。这种情况下,可能会希望传入的None被识别到并转化为默认值。fromd......
  • 【Python】Main函数的使用方法
    Start在Python中,类(Class)本身没有main函数。但是,您可以在类中定义一个方法(例如main),然后在类的实例中调用该方法。在Python中,通常使用if__name__=="__main__":来检查当前模块是否作为主程序运行。如果是,则执行相应的代码。下面是一个简单的示例,说明如何在Python类中定义一个mai......
  • python基础 循环嵌套
    嵌套语句使用星号打印foriinrange(1,6):forxinrange(1,i+1):print('*',end='')print('')foriinrange(1,6):forxinrange(i,6):print('*',end='')print('')99乘法表  while......
  • python的配置文件 ini 类型/json类型
    ini类型会把所有的value都改成str类型,而json会保持原本value的类型不变。1.ini/cnf等类型配置文件cfg.cfg[mysql]host="10.12.7.154"port=31066user="root"password="xxx"charset="utf8"database="project_database"使用配置文件from......
  • python去除某列固定数字对应的整行方法
     想去除month列里的1,2,3,4,10,11,12月对应的行留下5,6,7,8,9月#!usr/bin/envpython#-*-coding:utf-8-*-"""@author:Su@file:deletestaion.py@time:2023/09/22@desc:"""importpandasaspddf=pd.read_excel('/lianxi/SPI.xlsx�......
  • 用python脚本计算某一个文件的行数
    python可以统计文件的行数,你相信吗?不管你信不信反正我信了。下面我们来看一下python怎样统计文件的行数,代码很简单,我也做了注释,很简单的实现。。。123456789101112131415161718192021#_*_coding:utf_8#引入sys和系统os模块import sys import os '''计算某一个文件的行数'''def......
  • (转)Python描述数据结构之线索二叉树篇
    原文:https://blog.csdn.net/qq_42730750/article/details/108285846前言  本篇章主要介绍线索二叉树,包括线索二叉树的基本概念、构造及遍历,并用Python实现其创建及其遍历等操作。1.基本概念  上篇博客介绍的二叉链表的存储结构体现的只是一种父子关系,它不能直接得到结点在......
  • python面向对象的三大特性:封装性、继承性、多态性
    python面向对象的三大特性:封装性、继承性、多态性一、python中的封装在python代码中,封装具有两层含义:①在把现实世界中的实体中的属性和方法写到类的里面的操作即为封装。classPerson(object):#封装属性#封装方法②封装可以为属性和方法添加私有权限(属性和方......
  • Python 基本语法
    在开始学习Python编程语言之前,首先要掌握基本的语法。本文将介绍Python编程语言的基本语法,帮助初学者顺利进入Python编程世界。一、Python编程语言概述Python是一种高级编程语言,具有简单易学、语法简洁、功能强大等特点。Python支持多种编程范式,包括面向对象、面向......
  • 如何在python代码中自动插入时间和作者信息
    在编程的过程中,为养成良好的写代码习惯,很多人通常喜欢将一些作者信息以及编码信息存储在代码中,以便于后期的查阅,也可帮助后来者进行快速入手,那么如何才能让他自动出现在我们的代码中呢,我们可按照下面的方式进行设置,希望可以帮到你!在python编程工具pycharm中按照以下路径打开:File......