用python开发的抖音关键词搜索采集软件

2024-07-07 07:22:59 浏览数 (2)

采集目的:抖音关键词搜索结果采集目的:抖音关键词搜索结果

抖音作为国内颇受欢迎的短视频社交平台,汇聚了大量用户群体和活跃用户。分析抖音上的热门视频可用于市场调研和竞品分析,帮助了解流行内容和趋势,从而为企业制定营销策略和推广方案提供参考。同时,抖音也可作为灵感源泉,帮助内容创作者发现新的创意和内容方向。

为了实现这一目标,我使用Python开发了一个爬虫采集软件,可根据关键词抓取抖音视频数据。

为了方便不熟悉编程的用户和文科专业人士使用,我开发了一个图形界面软件,用户无需安装Python,也无需更改代码,只需双击打开即可使用!

软件运行界面如下所示:

软件运行界面软件运行界面

在软件运行过程中,显示了部分数据采集结果,如下图所示:

部分爬取结果部分爬取结果

此外,我还制作了一段演示视频,展示软件的具体使用过程,供非IT领域从业者参考:【软件演示】Python编写的抖音关键词搜索采集工具。

有几点重要说明需要特别指出:

工具说明工具说明

在软件的代码解析中,通过定义请求地址和请求头部等参数,模拟浏览器发送请求,并获取抖音视频数据。为了方便用户了解软件运行情况和历史记录,还包含了日志模块,可记录软件运行的详细信息。

请求地址:(目标链接)

代码语言:txt复制
# 请求地址
url = 'https://www.douyin.com/aweme/v1/web/search/item/'

请求头:(模拟浏览器)

代码语言:txt复制
# 请求头
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"
}

请求参数:(爬取条件)

代码语言:txt复制
# 请求参数
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": ""
}

发送请求:(相当于浏览器访问dy页面的过程)

代码语言:txt复制
# 发送请求
r = requests.get(url, headers=h1, params=params)
# 以json格式接收返回数据
json_data = r.json()

解析响应数据:

代码语言:txt复制
for v in video_list:
	# 视频标题
	title = v['aweme_info']['desc']
	self.tk_show('视频标题:'   title)
	title_list.append(title)

保存解析结果到csv文件:

代码语言:txt复制
# 保存数据到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,
	}
)
df.to_csv(self.result_file, mode='a ', index=False, header=header, encoding='utf_8_sig')
self.tk_show('保存csv文件成功')

日志实现逻辑:

代码语言:txt复制
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')

以上就是全部重要实现代码啦。

最后,本文首发于公号【老男孩的平凡之路】,欢迎大家交流!

0 人点赞