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

一、介绍

二、代码

三、问题

 

一、介绍

  现在的网站以及页面,一般都是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()

三、问题

 

posted @ 2023-09-25 11:20  PKGAME  阅读(1013)  评论(0编辑  收藏  举报