爬虫仅限于知识学习,本代码不得用于任何商业活动侵权,如有不适,请联系博主进行修改或者删除。 

我选择的是关键词“非遗”,你可以自己选择需要的关键词。

代码如下:

import json

import requests

from urllib.parse import urlencode

import time

import random

import openpyxl

def getUrl():

userList = []

#一次获得12个用户信息,如果想获得1200个用户数据就填range(100)

for i in range(100):

#设置一下,每隔1~10秒,获取一次请求,防止被封ip

randTime =random.randint(1,10)

time.sleep(randTime)

#每次获得12个用户信息

preUrl = '####第十步会讲怎么获取'

params = {'offset': 12*i, 'count': 12}# 查询参数

needChangeUrl = urlencode(params)#'offset=0&count=30'

rearUrl = '#####第十步会讲怎么获取'

url = preUrl + needChangeUrl + rearUrl

#模拟浏览器headers

headers = {

'Host': 'www.douyin.com',

'Connection': 'keep-alive',

'sec-ch-ua': 'Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24',

'Accept': 'application/json, text/plain, */*',

'sec-ch-ua-mobile': '?0',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',

'sec-ch-ua-platform': '"Windows"',

'Sec-Fetch-Site': 'same-origin',

'Sec-Fetch-Mode': 'cors',

'Sec-Fetch-Dest': 'empty',

'Referer': url,

'Accept-Encoding': 'gzip, deflate, br',

'Accept-Language': 'zh-CN,zh;q=0.9',

'Cookie': '######',

}

# 利用requests发送请求,印象中遇到了SSL、443之类的错误,很多时候是由于没有设置verify字段导致的。

res = requests.get(url, headers=headers, verify=False)

print(res)

# res.text是响应结果,json字符串形式

strText = res.text

print(strText)

# 解析json字符串,转换为字典,方便python读取现需要的字段。

dict = json.loads(strText)

print(dict)

#调用函数

spader(dict,userList)

saveToExcel(userList)

#根据获取的json数据解析字段并保存

def spader(dict,userList):

# 字典中,user_list字段存储了用户的基本信息,其内部又包含了很多详细信息。

for i in range(len(dict['user_list'])):

#名称

the_name = dict['user_list'][i]['user_info']['nickname']

print("名称:" ,the_name)

#抖音号

unique_id = dict['user_list'][i]['user_info']['unique_id']

print("抖音号:" ,unique_id)

#简介

signature = dict['user_list'][i]['user_info']['signature']

print("简介:" ,signature)

#粉丝数

follower_count = dict['user_list'][i]['user_info']['follower_count']

print("粉丝数:" ,follower_count)

#获赞数

total_favorited = dict['user_list'][i]['user_info']['total_favorited']

print("获赞数:" ,total_favorited)

#官方认证

versatile_display = dict['user_list'][i]['user_info']['versatile_display']

print("官方认证:" ,versatile_display)

userinfo= [the_name,unique_id,signature,follower_count,total_favorited,versatile_display]

userList.append(userinfo)

#return userList

#保存到Excel表格中

def saveToExcel(userList):

# 创建一个工作簿

workbook = openpyxl.Workbook()

# 选择默认的工作表

sheet = workbook.active

sheet.append(['名称','抖音号','简介','粉丝数','获赞数','官方认证'])

# 将数据逐行写入工作表

for row in userList:

sheet.append(row)

# 保存工作簿到指定文件路径

workbook.save('output.xlsx')

if __name__ == "__main__":

getUrl()

保姆级教程

代码需要改的地方就两个

1、url

2、headers

第一步、浏览器进入网页版,搜索要查找的内容,进入用户这。

 

 第二步、按电脑上f12键,调出开发者模式,选择network,并搜索关键词

第三步、现在查找关键词肯定还没有东西,那是因为最开始的网络包,没有抓取到。

第四步、那就再点一次搜索按钮

第五步

第六步、我们在旁边就能看到我们需要的东西了,在response里。

第七步、我们来找URL,看到这个headers了吧。里面的request Url,就是教程最开始需要的URL。绿色部分很重要,待会解答具体(可以看第十步)

第八步、我们来找headers,一直往下找,找到request headers,里面就是所需要的全部内容了。

第九步、把内容填到代码的对应地方。Referer不要动,它是直接用现成的Url。

第十步、在这个request url里面,绿色部分有两个参数,offset表示偏移量,也就是说从第0个用户开始读,count表示一次读10个。这里offset我们循环给它赋值,count可以自己赋值,我试了10-30都行,你可以自己试试。

第十一步、看我代码,preUrl就是上面图中绿色方框前面的内容,rearUrl就是绿色方框后面的内容。needChangeUrl就是绿色方框的部分,需要给它赋值。

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: