总之,Clicknium功能更强大,使用更简单,能够模拟浏览器行为,执行JavaScript代码,获取动态加载数据,是一个很好的动态网页爬取工具。
下面以抖音评论的采集为示例:
# 导入 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 删除。