• 08_selenium实战——学习平台公开数据批量获取


    0、:前言

    • 该实战任务是对某视频平台中’标题’、 ‘点赞数量’、 ‘投币数量’、‘收藏数量’、‘播放次数’、以及前五条评论进行爬取。
    • 要求1:可以控制爬取视频的主题(爬取主题搜索之后的内容)
    • 要求2:可以控制爬取视频的数量
    • 要求3:对于评论数不足5条的用0填充评论内容
    • 爬虫实现流程概要:
      在这里插入图片描述

    1、检查谷歌浏览器版本,下载对应的页面驱动:

    # 方法1:老版本selenium
    from selenium.webdriver import Chrome
    
    # windows系统检查是否正确配置好可以使用selenium的chrome驱动:
    driver = Chrome(executable_path='./chromedriver.exe')
    driver.get(url='https://www.baidu.com/')
    driver.close()
    
    # 方法2:新版本selenium
    # from selenium.webdriver import Chrome
    # from selenium.webdriver.chrome.service import Service
    #
    # # 创建谷歌浏览器对象:
    # driver = Chrome(service=Service(executable_path='./chromedriver.exe')) # mos系统换一下包名称
    # driver.get(url='https://www.baidu.com/')
    # driver.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    如果百度页面一闪出现后,关闭,就说明谷歌驱动和谷歌浏览器匹配。


    2、首次爬取获取你的cookies:

    • cookie是字典,cookies是cookie的复数,是一个列表。cookie保存了用户的账号、密码信息,拥有cookie信息,就能不通过账号密码登录平台,因为本此爬取平台必须登录,所以需要首先获取cookies信息,方便每次测试直接通过cookies登录
    • cookies是有有效期的,失效后需要重新获取
    • 代码
    # 1、首先模拟登录,获取B站cookies
    # 导包
    import time
    import random
    from selenium import webdriver # 谷歌浏览器插件
    from selenium.webdriver.common.by import By # 定位策略
    from selenium.webdriver.support.wait import WebDriverWait # 导入显式等待模块
    from selenium.webdriver.support import expected_conditions as EC # 导入期望模块配合显式等待
    
    # 网页打开时的配置代码
    # 为谷歌浏览器对象修改配置(创建设置对象)
    Options = webdriver.ChromeOptions()
    # 不让浏览器关闭
    Options.add_experimental_option("detach", True)
    
    browser = webdriver.Chrome(executable_path='./chromedriver.exe', options=Options) # 创建谷歌浏览器对象
    # 窗口最大化(因为B站每次加载显示的项目数量随页面改变)
    browser.maximize_window()
    URL = 'https://www.bilibili.com/'
    browser.get(url=URL)
    
    # 找到登录按钮
    login_button = browser.find_element(By.CSS_SELECTOR,
                         '#i_cecream > div.bili-feed4 > div.bili-header.large-header > div.bili-header__bar > ul.right-entry > li:nth-child(1) > li > div > div > span')
    # 点击登录按钮
    login_button.click()
    
    # 判断是否登录成功(显式等待60s直到用户名出现)
    WebDriverWait(browser, 60).until(
        # 等待用户名出现
        EC.text_to_be_present_in_element(
            (By.CSS_SELECTOR,'#i_cecream > div.bili-feed4 > div.bili-header.large-header > div.bili-header__bar > ul.right-entry > li.v-popover-wrap.header-avatar-wrap > div.v-popover.is-bottom > div > div > a.nickname-item'),
            '疋瓞'
        ))
    print('登录成功!')
    # 登录成功以后获取cookie,将cookie保存到文件中
    cookies = browser.get_cookies()
    # cookie是字典,cookies是cookie的复数,是一个列表。
    with open('Bili_cookies.txt', 'w', encoding='utf-8') as file:
        file.write(str(cookies))
    print('cookies写入完成!')
    browser.quit() # 关闭所有标签页
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    3、通过cookies登录爬取信息:

    • 代码
    # 2、使用cookies登录【cookies隔一段时间会失效】
    # 导包
    import csv
    import time
    import random
    from selenium import webdriver # 谷歌浏览器插件
    from 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    使用rust实现九九乘法表
    伊朗黑客对以色列科技行业发起恶意软件攻击
    MFC CList<CRect, CRect&> m_listRect;的用法
    超简单的抖音去水印
    深度卷积神经网络是什么,卷积神经网络教学视频
    40w粉拿下900w播放!这个UP主在B站发起1元买水挑战!
    线程池的理解
    TensorFlow和Pytorch是什么?干什么用的?
    推荐一款微软出品的开发神器,体验不输IDEA!
    【Spring源码系列】Bean生命周期-Bean销毁
  • 原文地址:https://blog.csdn.net/sz1125218970/article/details/133631539