一、爬取目标

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

本次爬取的目标是:抖音热榜

共爬取到50条数据,对应TOP50热榜。含5个字段,分别是:

热榜排名,热榜标题,热榜时间,热度值,热榜标签。

用Chrome浏览器,右键打开开发者模式,选择:网络->XHR这个选项,重新刷新一下页面。

操作过程,如下图所示:



成功找到了50条热榜数据。

下面,开始编码爬虫代码。

二、编写爬虫代码

首先,导入需要用到的库:

import requests
import pandas as pd
import time

定义一个请求地址,即上图中的目标链接地址:

# 接口地址
url = 'https://www.douyin.com/aweme/v1/web/hot/search/list/?device_platform=webapp&aid=6383&channel=channel_pc_web&detail_list=1&source=6&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1440&screen_height=900&browser_language=en-US&browser_platform=MacIntel&browser_name=Chrome&browser_version=114.0.0.0&browser_online=true&engine_name=Blink&engine_version=114.0.0.0&os_name=Mac+OS&os_version=10.15.7&cpu_core_num=4&device_memory=8&platform=PC&downlink=1.5&effective_type=3g&round_trip_time=600&webid=7246602757481154103&msToken=A-dVF1R3L6t6yeYNVsnPA7YMBkohetjMSING0Q3C3UGXBq7B_lhuJVv6N1hF8Yum9qxQMMVa_GiSsER1Yf595bF5Q_O3-JY1hQ8s-ZPB21PCVYL5C7PEjQiPAMGtGg==&X-Bogus=DFSzswVOXn0ANcrmtjl2YN7TlqSE'

定义一个请求头,从开发者模式中的Headers->Request Headers中复制下来:

# 构造请求头
h1 = {
'Cookie': '换成自己的cookie值',
'Accept': 'application/json, text/plain, */*',
'Accept-Encoding': 'gzip, deflate, br',
'Host': 'www.douyin.com',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
'Referer': 'https://www.douyin.com/hot',
'Connection': 'keep-alive'
}

不知如何获取Cookie?参考下图:

向目标地址发送请求(带上请求头),并用json格式接收返回数据:

# 发送请求
r = requests.get(url, headers=h1)
# 用json接收请求数据
json_data = r.json()

定义一些空列表,用于存储数据:

position_list = []  # 热榜排名
title_list = [] # 热榜标题
time_list = [] # 热榜时间
hot_value_list = [] # 热度值
label_list = [] # 热榜标签

以“热榜标题”为例,解析数据:

for data in data_list:
# 热榜标题
title = data['word']
print('热榜标题:', position, title)
title_list.append(title)

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

最后,把解析到的数据,存储到Dataframe中,并保存到csv文件里:

# 拼装爬取到的数据为DataFrame
df = pd.DataFrame(
{
'热榜排名': position_list,
'热榜标题': title_list,
'热榜时间': time_list,
'热度值': hot_value_list,
'热榜标签': label_list,
}
)
# 保存结果到csv文件
df.to_csv('抖音热榜.csv', index=False, encoding='utf_8_sig')

这里需要注意的是,to_csv要加上encoding='utf_8_sig'参数,防止保存到csv文件产生乱码数据。

查看部分爬取结果:

共51条数据(含1条置顶热搜),对应热榜TOP50排名。

每条数据含5个字段:热榜排名,热榜标题,热榜时间,热度值,热榜标签。。

三、同步讲解视频

3.1 代码演示视频

代码演示: 【Python爬虫演示】用Python爬抖音热榜数据

四、获取完整源码

get完整源码:【爬虫案例】用Python爬取抖音热榜数据!


我是@马哥python说 ,持续分享python源码干货中!

【爬虫案例】用Python爬取抖音热榜数据!的更多相关文章

  1. python爬取抖音APP视频教程

    本文讲述爬取抖音APP视频数据(本文未完,后面还有很多地方优化总结) 公众号回复:抖音 即可获取源码 1.APP抓包教程,需要用到fiddler fiddler配置和使用查看>>王者荣耀盒 ...

  2. 教你用python爬取抖音app视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  3. 一篇文章教会你用Python抓取抖音app热点数据

    今天给大家分享一篇简单的安卓app数据分析及抓取方法.以抖音为例,我们想要抓取抖音的热点榜数据. 要知道,这个数据是没有网页版的,只能从手机端下手. 首先我们要安装charles抓包APP数据,它是一 ...

  4. Python爬取抖音视频

    最近在研究Python爬虫,顺便爬了一下抖音上的视频,找到了哥们喜欢的小姐姐居多,咱们给他爬下来吧. 最终爬取结果 好了废话补多说了,上代码! #https://www.iesdouyin.com/a ...

  5. from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...

  6. 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    抖音很火,楼主使用python随机爬取抖音视频,并且无水印下载,人家都说天下没有爬不到的数据,so,楼主决定试试水,纯属技术爱好,分享给大家.. 1.楼主首先使用Fiddler4来抓取手机抖音app这 ...

  7. Python爬虫---爬取抖音短视频

    目录 前言 抖音爬虫制作 选定网页 分析网页 提取id构造网址 拼接数据包链接 获取视频地址 下载视频 全部代码 实现结果 待解决的问题 前言 最近一直想要写一个抖音爬虫来批量下载抖音的短视频,但是经 ...

  8. python网络爬虫第三弹(<爬取get请求的页面数据>)

    一.urllib库 urllib是python自带的一个用于爬虫的库,其主要作用就是通过代码模拟浏览器发送请求,其常被用到的子模块在 python3中的为urllib.request 和 urllib ...

  9. 爬虫系列(1)-----python爬取猫眼电影top100榜

    对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...

  10. 吴裕雄--天生自然PYTHON爬虫:使用Selenium爬取大型电商网站数据

    用python爬取动态网页时,普通的requests,urllib2无法实现.例如有些网站点击下一页时,会加载新的内容,但是网页的URL却没有改变(没有传入页码相关的参数),requests.urll ...

随机推荐

  1. 痞子衡嵌入式:给i.MXRT1xxx系列GPIO提早供电会影响DCDC_PSWITCH上电时序导致内部DCDC启动失败

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是给i.MXRT1xxx系列GPIO提早供电会影响DCDC_PSWITCH上电时序导致内部DCDC启动失败. 最近有一个 RW612 产品 ...

  2. FastJson反序列化2-1.2.24漏洞利用

    1.1.2.24漏洞利用-JNDI 漏洞利用思路,如果某个类的set()方法中使用了JNDI,那么则可以使用JDNI注入执行任意命令.事实上在JDK8中就存在这样的类:JDBCRowSetImpl; ...

  3. QT实现参数批量配置

    QT实现批量配置 需求 一些参数需要批量化配置 之前搭建的FPGA的寄存器控制模型 使用AXI-lite搭建 直接操作上位机 这里需要一个可以快速配置所有参数的上位机 需要保存文件,可以保留上一次的参 ...

  4. 【Java】这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";

    String s1 = "a"; String s2 = s1 + "b"; String s3 = "a" + "b" ...

  5. #欧拉函数#洛谷 2303 [SDOI2012] Longge 的问题

    题目 求\(\sum_{i=1}^n\gcd(n,i)\) 分析 \(=\sum_{i=1}^n\sum_{d|gcd(n,i)}\varphi(d)\) \(=\sum_{d|n}\varphi(d ...

  6. HDC2022 开发者亮点抢先看,线上线下精彩活动等你探索!

    原文:https://mp.weixin.qq.com/s/A2sfpPKBvF6zwinbUsgwiw,点击链接查看更多技术内容.

  7. 记录协助Javaer硬件快速开发过程之Web技术栈对接施耐德网络IO网关

    前一段时间有个Java技术栈的朋友联系到我,需要快速对接现有的无人值守称重系统,这里的对接是指替代现有系统,而非软件层面的对接,也就是利用现有的硬件开发一套替代现有软件的自动化系统.主要设备包括地磅秤 ...

  8. Spring-Cloud 组件之 Spring Cloud Eureka:服务注册与发现

    Spring Cloud Eureka:服务注册与发现 SpringCloud学习教程 SpringCloud Spring Cloud Eureka是Spring Cloud Netflix 子项目 ...

  9. c# checked 和 unchecked

    前言 我们知道一个东西在c# 中 比如说int 的max 加1会等于min. 如: static void Main(string[] args) { int i = 2147483647; int ...

  10. allure常用

    overview:概述页面:categories:分类目录:suites:按套件和类分组的已执行测试的标准结构:graphs:图表:timeline:时间线:behaviors:可根据epic.fea ...