爬取直播间信息

免责声明

感谢您学习本爬虫学习Demo。在使用本Demo之前,请仔细阅读以下免责声明:

  1. 学习和研究目的:本爬虫Demo仅供学习和研究使用。用户不得将其用于任何商业用途或其他未经授权的行为。
  2. 合法性:用户在使用本Demo时,应确保其行为符合法律法规。请务必了解并遵守目标网站的服务条款和隐私政策。
  3. 道德规范:请尊重目标网站的使用条款,不要对其服务器造成过大的负载或影响其正常运行。
  4. 知识产权保护:抓取的数据应仅用于个人学习和研究,不得用于侵犯版权及其他知识产权的行为。
  5. 隐私保护:请勿抓取或存储包含个人敏感信息的数据,避免侵犯他人隐私权。
  6. 责任自负:使用本Demo可能存在一定风险,包括但不限于法律风险、数据丢失、账户封禁等。用户需自行承担所有相关风险和责任。

博主不对因使用本Demo而产生的任何直接或间接损失承担责任。用户应对其使用行为负责,并自行承担所有可能的后果。
重要提示:在使用本Demo前,请确保已详细阅读并理解上述免责声明。如有任何疑虑,请立即停止使用。

爬取这个页面的公开数据

使用 Selenium 进行爬取

下图正在自动化向下滚动窗口。

爬取直播间标题、直播间地址、直播间人数、用户名、用户头像

demo代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import random

# 初始化WebDriver
driver = webdriver.Chrome()

# 打开xxx直播页面
driver.get("https://live.douyin.com/hot_live")
# driver.get("https://live.douyin.com/category/1_3_1_1010087")

# js代码,让div滚动滚动到最底部
js = """
    var div = document.getElementById('_douyin_live_scroll_container_');
    div.scrollBy(0, div.scrollHeight - div.clientHeight - div.scrollTop);
"""

wait = WebDriverWait(driver, 1)

# 循环向下滚动,特定元素出现,退出循环
while True:
    driver.execute_script(js)
    try:
        # 等待加载特定元素出现
        element1 = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "B_mbw29p")))
        print("加载完成")
        break
    except:
        print(f"继续加载中 {random.randint(1, 1000)}")

# 等待一些时间,让图片都加载完成
time.sleep(5)

# 所有直播间都加载出来后,开始提取直播间信息
el_list = driver.find_elements(By.XPATH, '//*[@id="_douyin_live_scroll_container_"]/div/div/div/ul/li')
print(f"找到 {len(el_list)} 个直播间")

i = 1
for el in el_list:
    temp = {}

    try:
        temp["直播间标题"] = el.find_element(By.XPATH, './a/div[2]/p').text
    except Exception:
        temp["直播间标题"] = ""

    try:
        temp["链接地址"] = el.find_element(By.XPATH, './a').get_attribute('href')
    except Exception:
        temp["链接地址"] = ""

    try:
        temp["直播间人数"] = el.find_element(By.XPATH, './a/div[1]/div/div[5]/div/div/span/span').text
    except Exception:
        temp["直播间人数"] = ""

    try:
        temp["封面图片"] = el.find_element(By.XPATH, './a/div[1]/div/div[3]/img').get_attribute('src')
    except Exception:
        temp["封面图片"] = None

    try:
        temp["用户名"] = el.find_element(By.XPATH, './a/div[3]/object/a').text.strip()
    except Exception:
        temp["用户名"] = ""

    try:
        temp["头像"] = el.find_element(By.XPATH, './a/div[3]/div/span/img').get_attribute('src')
    except Exception:
        temp["头像"] = ""

    print(f"第 {i} 个直播间的数据 {temp}")
    i += 1

time.sleep(3)

# 关闭浏览器
driver.quit()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

又逢乱世

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值