【GUI软件】抖音搜索结果批量采集,支持多个关键词、排序方式、发布时间筛选等!

这篇具有很好参考价值的文章主要介绍了【GUI软件】抖音搜索结果批量采集,支持多个关键词、排序方式、发布时间筛选等!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 一、背景介绍
    • 1.1 爬取目标
    • 1.2 演示视频
    • 1.3 软件说明
  • 二、代码讲解
    • 2.1 爬虫采集模块
    • 2.2 软件界面模块
    • 2.3 日志模块
  • 三、获取源码及软件

一、背景介绍

1.1 爬取目标

您好!我是@马哥python说,一名10年程序猿。

我用python开发了一个爬虫采集软件,可自动按关键词抓取抖音视频数据。

为什么有了源码还开发界面软件呢?方便不懂编程代码的小白用户使用,无需安装python,无需改代码,双击打开即用!

软件界面截图:
【GUI软件】抖音搜索结果批量采集,支持多个关键词、排序方式、发布时间筛选等!

爬取结果截图:
结果截图1:
【GUI软件】抖音搜索结果批量采集,支持多个关键词、排序方式、发布时间筛选等!

结果截图2:
【GUI软件】抖音搜索结果批量采集,支持多个关键词、排序方式、发布时间筛选等!

结果截图3:
【GUI软件】抖音搜索结果批量采集,支持多个关键词、排序方式、发布时间筛选等!

以上。

1.2 演示视频

软件使用演示:
【软件演示】抖音搜索采集工具,支持多个关键词、排序方式、发布时间等

1.3 软件说明

几点重要说明:

  1. Windows用户可直接双击打开使用,无需Python运行环境,非常方便!
  2. 需要填入个人cookie和目标视频链接
  3. 支持筛选:排序方式(综合排序/最新发布/最多点赞)和发布时间(不限/一天内/一周内/半年内)
  4. 支持同时爬多个关键词
  5. 爬取过程中,有log文件详细记录运行过程,方便回溯
  6. 爬取完成后,自动导出结果到csv文件
  7. 可爬13个字段,含:关键词,页码,视频标题,视频链接,作者昵称,抖音号,作者链接,作者粉丝数,发布时间,点赞数,评论数,收藏数,转发数。

以上。

二、代码讲解

2.1 爬虫采集模块

首先,定义接口地址作为请求地址:

# 请求地址
url = 'https://www.douyin.com/aweme/v1/web/search/item/'

定义一个请求头,用于伪造浏览器:

# 请求头
h1 = {
	"Accept": 'application/json, text/plain, */*',
	"Accept-Encoding": "gzip, deflate",
	"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
	"Cookie": self.cookie_val,
	"Referer": "",
	"Sec-Ch-Ua": 'Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120',
	"Sec-Ch-Ua-Mobile": "?0",
	"Sec-Ch-Ua-Platform": "Windows",
	"Sec-Fetch-Dest": "empty",
	"Sec-Fetch-Mode": "cors",
	"Sec-Fetch-Site": "same-origin",
	"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

说明一下,cookie是个关键参数。
cookie的获取方法,如下:
【GUI软件】抖音搜索结果批量采集,支持多个关键词、排序方式、发布时间筛选等!

这个值非常重要,软件界面需要填写!!

加上请求参数,告诉程序你的爬取条件是什么:

# 请求参数
params = {
	"device_platform": "webapp",
	"aid": "6383",
	"channel": "channel_pc_web",
	"search_channel": "aweme_video_web",
	"sort_type": self.trans_sort_type(v_str=self.sort_type),
	"publish_time": self.trans_time_range(v_str=self.time_range),
	"keyword": search_keyword,
	"search_source": "tab_search",
	"query_correct_type": "1",
	"is_filter_search": "1",
	"from_group_id": "",
	"offset": cursor,
	"count": "20",
	"pc_client_type": "1",
	"version_code": "170400",
	"version_name": "17.4.0",
	"cookie_enabled": "true",
	"screen_width": "1536",
	"screen_height": "864",
	"browser_language": "zh-CN",
	"browser_platform": "Win32",
	"browser_name": "Chrome",
	"browser_version": "120.0.0.0",
	"browser_online": "true",
	"engine_name": "Blink",
	"engine_version": "120.0.0.0",
	"os_name": "Windows",
	"os_version": "10",
	"cpu_core_num": "8",
	"device_memory": "8",
	"platform": "PC",
	"downlink": "10",
	"effective_type": "4g",
	"round_trip_time": "50",
	"webid": "7249265465250973217",
	"msToken": "Sx2PzLIz0YGvM_wrIkaUaaeUb1JUutgo3ERiWmwV1w6VC1naW15lFM6N3nanMZRZYfaHLvXrDNzGqkAyvvCpdO3d6u0u_kNmmZZHeMIsDqga2eWnjTzp5g==",
	"X-Bogus": "DFSzswVuketAN9oEt7PfdSlls7YT"
}

下面就是发送请求和接收数据:

# 发送请求
r = requests.get(url, headers=h1, params=params)
print(r.status_code)
# 以json格式接收返回数据
json_data = r.json()

定义一些空列表,用于存放解析后字段数据:

# 定义空列表
title_list = []  # 视频标题
link_list = []  # 视频链接
author_name_list = []  # 作者昵称
author_id_list = []  # 抖音号
author_link_list = []  # 作者链接
follower_count_list = []  # 作者粉丝数
create_time_list = []  # 发布时间
like_count_list = []  # 点赞数
comment_count_list = []  # 评论数
collect_count_list = []  # 收藏数
share_count_list = []  # 转发数

循环解析字段数据,以"视频标题"为例:

for v in video_list:
	# 视频标题
	title = v['aweme_info']['desc']
	self.tk_show('视频标题:' + title)
	title_list.append(title)

其他字段同理,不再赘述。

最后,是把数据保存到csv文件:

# 保存数据到DF
df = pd.DataFrame(
	{
		'关键词': search_keyword,
		'页码': page,
		'视频标题': title_list,
		'视频链接': link_list,
		'作者昵称': author_name_list,
		'抖音号': author_id_list,
		'作者链接': author_link_list,
		'作者粉丝数': follower_count_list,
		'发布时间': create_time_list,
		'点赞数': like_count_list,
		'评论数': comment_count_list,
		'收藏数': collect_count_list,
		'转发数': share_count_list,
	}
)
if os.path.exists(self.result_file):  # 如果文件存在,不再设置表头
	header = False
else:  # 否则,设置csv文件表头
	header = True
df.to_csv(self.result_file, mode='a+', index=False, header=header, encoding='utf_8_sig')
self.tk_show('保存csv文件成功:' + self.result_file)

完整代码中,还含有:判断循环结束条件、排序方式(综合排序/最新发布/最多点赞)、发布时间(不限/一天内/一周内/半年内)等关键实现逻辑。

2.2 软件界面模块

主窗口部分:

# 创建主窗口
root = tk.Tk()
root.title('抖音搜索采集软件v1.1 | 马哥python说 |')
# 设置窗口大小
root.minsize(width=850, height=650)

输入控件部分:

# 搜索关键词
tk.Label(root, justify='left', text='搜索关键词:').place(x=30, y=160)
entry_kw = tk.Text(root, bg='#ffffff', width=60, height=2, )
entry_kw.place(x=125, y=160, anchor='nw')  # 摆放位置

底部版权部分:

# 版权信息
copyright = tk.Label(root, text='@马哥python说 All rights reserved.', font=('仿宋', 10), fg='grey')
copyright.place(x=290, y=625)

以上。

2.3 日志模块

好的日志功能,方便软件运行出问题后快速定位原因,修复bug。

核心代码:

def get_logger(self):
	self.logger = logging.getLogger(__name__)
	# 日志格式
	formatter = '[%(asctime)s-%(filename)s][%(funcName)s-%(lineno)d]--%(message)s'
	# 日志级别
	self.logger.setLevel(logging.DEBUG)
	# 控制台日志
	sh = logging.StreamHandler()
	log_formatter = logging.Formatter(formatter, datefmt='%Y-%m-%d %H:%M:%S')
	# info日志文件名
	info_file_name = time.strftime("%Y-%m-%d") + '.log'
	# 将其保存到特定目录,ap方法就是寻找项目根目录,该方法博主前期已经写好。
	case_dir = r'./logs/'
	info_handler = TimedRotatingFileHandler(filename=case_dir + info_file_name,
						when='MIDNIGHT',
						interval=1,
						backupCount=7,
						encoding='utf-8')

日志文件截图:
【GUI软件】抖音搜索结果批量采集,支持多个关键词、排序方式、发布时间筛选等!

以上。

三、获取源码及软件

完整python源码及exe软件,微信公众号"老男孩的平凡之路"后台回复"爬抖音搜索软件"即可获取。点击直达


推荐阅读:【GUI界面软件】抖音评论采集:自动采集10000多条,含二级评论、展开评论!文章来源地址https://www.toymoban.com/news/detail-785502.html

到了这里,关于【GUI软件】抖音搜索结果批量采集,支持多个关键词、排序方式、发布时间筛选等!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搜索引擎的个性化搜索:为何搜索结果因人而异

    💂 个人网站:【海拥】【游戏大全】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 搜索引擎已成为我们获取信息的重要工具,而当我们输入相同的进行搜索时,为

    2024年02月11日
    浏览(45)
  • es的搜索结果处理

    elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。 1.1.普通字段排序 keyword、数值、日期类型排序的语法基本一致。 语法 : 排序条件是一个数组,也就是可以

    2024年02月01日
    浏览(54)
  • Elasticsearch(八)搜索---搜索辅助功能(上)--指定搜索返回字段,结果计数和分页

    前面我们已经将ES的基础操作(索引,映射,文档)学习过了,从这一章开始,我们便开始学习ES的最大的功能—搜索 ES为用户提供了丰富的搜索功能:既有基本的搜索功能,又有搜索建议功能;既有常用的普通类型的匹配功能,又有基于地理位置的搜索功能;既提供了分页搜

    2024年02月05日
    浏览(38)
  • 织梦dedecms在搜索结果页按栏目分类显示搜索数据

    搜索结果示范 1、搜索框代码里使用name=\\\"q\\\"作为搜索框属性,例如  2、打开 /include/taglib/arclist.lib.php 找到,大概在188行 $innertext = trim($innertext); 在它下面加入 preg_match(\\\"/~([A-Za-z0-9_]+)~/s\\\", $keyword, $conditions); if(isset($_REQUEST[\\\'q\\\']) $keyword = \\\'~q~\\\') { preg_match(\\\"/~([A-Za-z0-9_]+)~/s\\\", $keyword, $cond

    2024年02月03日
    浏览(38)
  • 详解dedecms搜索页面单独调用搜索结果条数的实现方法

    DEDE的搜索结果数量都集成在了列表分页标签里,并没有使用单独的函数来提供这个结果数量,因此对有单独调用搜索结果数量的用户来说,就有使用问题,这里提供二次开发的方法。 非常简单只要修改几个地方就行了: 第一步,打开/include/arc.searchview.class.php文件,查找代码

    2024年02月02日
    浏览(41)
  • 帝国CMS搜索结果显示数量的实现方法

    最近在做帝国CMS的搜索功能,记录一下方便大家以后使用,本文主要讲解一下修改帝国CMS搜索结果每页显示的数量的两种方法。 1、方法一:在后台搜索模板中直接设置数量 在后台——系统——系统参数设置——搜索设置——页面设置,如下图: 2、方法二:直接更改搜索系

    2024年02月03日
    浏览(27)
  • 微服务分布式搜索引擎 ElasticSearch 搜索结果处理 排序、分页与高亮

    本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 搜索结果处理 搜索的结果可以按照用户指定的方式去处理或展示。 elasticsearch默认是根据相关度算分(_score)来排序,但是也支

    2024年02月02日
    浏览(47)
  • 提升搜索效率-----使用chatGPT插件让搜索结果直接展示在谷歌界面右侧

    今天分享一个chatGPT的进阶玩法,使用谷歌浏览器插件的形式,将chatGPT植入到浏览器的搜索结果内。 而chatGPT会将你的搜索问题的结果,同步展示在谷歌搜索界面的右侧。 但还是要注意科学上网!!但毕竟谷歌也需要科学才能挤进去 以下为插件网址(火狐需要自己测试测试)

    2024年02月08日
    浏览(34)
  • Edge浏览器搜索栏固定为360搜索引擎 || 浏览器地址栏搜索,结果都是360搜索引擎

    搜索引擎的URL被篡改成了360搜索 ,很恶心。 打开 设置 = 隐私、搜索和服务 = 地址栏和搜索 (最下面) 可以看到可以选择 必应 或者 Google 再进入 管理搜索引擎 可以看到必应的URL已经被改成了 http://lx.pub/s?a=3b=%s ,正常应该是 https://www.bing.com/search?q=%s ,%s代表你搜索的内容。

    2024年02月10日
    浏览(44)
  • Elasticsearch --- DSL、RestClient查询文档、搜索结果处理

    elasticsearch的查询依然是基于JSON风格的DSL来实现的。   Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有 :查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询 :利用分词器对用户输入内容分词,然后去倒排

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包