Clicknium:更强大的自动化工具,可用于爬取抖音动态网页数据

2023-03-13 15:11:52 浏览数 (2)

Clicknium是一款基于Python和Selenium的自动化库,可以用于控制浏览器,实现网页自动化操作和数据爬取。Clicknium的特点是支持多种浏览器,提供了多种元素定位和操作方法,方便请求和响应处理。与Selenium相比,Clicknium具有以下优势:
  • 支持多种浏览器,包括Chrome、Firefox、Edge和IE等,Selenium只支持Chrome和Firefox3。
  • 提供内置的录制器,可自动生成选择器,而Selenium需要手动编写XPath或CSS选择器定位元素。
  • 支持桌面应用自动化,能够无缝连接Web和桌面应用,而Selenium只能自动化Web应用。
  • 支持图像识别定位控件,有效弥补基于元素控件特征定位的缺陷,Selenium不支持此功能。

总之,Clicknium功能更强大,使用更简单,能够模拟浏览器行为,执行JavaScript代码,获取动态加载数据,是一个很好的动态网页爬取工具。

下面以抖音评论的采集为示例:

代码语言:java复制
# 导入 clicknium 库
import clicknium as cn

# 导入 requests 库
import requests

# 定义一个函数,生成 _signature 参数
def get_signature():
    # 这里是 _signature 的生成逻辑和源码
    # 参考 https://zhuanlan.zhihu.com/p/546209991
    # 返回一个字符串类型的 _signature 值
    return signature

# 创建一个 requests.Session 对象,并设置 proxies 参数(设置16YUN代理的认证信息)
session = requests.Session()
session.proxies = {"http": "http://16YUN:16IP@www.16yun.cn:8000", "https": "http://16YUN:16IP@www.16yun.cn:8000"}

# 创建一个浏览器对象,并传入 session 参数
browser = cn.Browser(session=session)

# 打开抖音网页版首页
browser.open("https://www.douyin.com/")

# 等待页面加载完成
browser.wait(10)

# 获取当前页面上的所有视频链接元素
video_links = browser.find_elements_by_css_selector("a.video-card")

# 遍历每个视频链接元素
for video_link in video_links:
    # 获取视频链接的 href 属性值
    video_url = video_link.get_attribute("href")
    
    # 拼接评论接口的 url ,需要替换掉 https://www.douyin.com/video/ 前缀,并加上 _signature 参数和其他必要参数(如 cursor ,表示分页)
    comment_url = "https://www.iesdouyin.com/web/api/v2/comment/list?aweme_id="   video_url.replace("https://www.douyin.com/video/", "")   "&_signature="   get_signature()   "&cursor=0"
    
    # 打开评论接口的 url 
    browser.open(comment_url)
    
    # 等待页面加载完成
    browser.wait(10)
    
    # 获取页面上显示的 json 数据,并转换为字典类型
    comment_data = browser.get_json()
    
    # 从字典中提取评论列表(comments)和是否有下一页(has_more)
    comments = comment_data["comments"]
    has_more = comment_data["has_more"]
    
    # 遍历每条评论数据,并打印出评论内容(text)
    for comment in comments:
        print(comment["text"])
        
        # 如果还有下一页,则继续拼接 url 并重复上述步骤,直到没有下一页为止

上面这段代码的功能是使用 clicknium 库和 requests 库,通过代理IP访问抖音网页版,获取每个视频的评论数据,并打印出来。

0 人点赞