前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Clicknium:更强大的自动化工具,可用于爬取抖音动态网页数据

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

原创
作者头像
jackcode
发布2023-03-13 15:11:52
2.7K1
发布2023-03-13 15:11:52
举报
文章被收录于专栏:爬虫资料
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访问抖音网页版,获取每个视频的评论数据,并打印出来。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档