04.爬虫---带参数请求数据---params

本文介绍如何使用Python进行带参数的网络请求,以爬取QQ音乐平台上的用户歌曲信息并实现翻页功能。通过分析Network中的Headers参数,将查询字符串转化为字典形式,利用自动化处理简化代码。
部署运行你感兴趣的模型镜像

在Network中的Headers中的Query String Parameters中找到下面的参数

把上面的参数放在一个字典中,记得要加上引号''和逗号,   由于加这些比较麻烦,写了个小函数,自动加上引号和逗号

def add_yinhao(test):
	#将复制来的param加上引号如下
	#test="""'content'"""
	test=test.replace(' ','')
	test=test.replace("\n","',\n'") #换行
	print(test.replace(":","':'"))
    
    #但是字典首尾要自己加上单引号
  • 简单的练习

爬取QQ音乐任何人的歌以及翻页

import requests
from bs4 import BeautifulSoup
import json

url='https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
for i in range(2):  #只遍历前两页的歌曲
    params={
    'ct':'24',
    'qqmusic_ver':'1298',
    'new_json':'1',
    'remoteplace':'txt.yqq.song',
    'searchid':'64221885833364721',
    't':'0',
    'aggr':'1',
    'cr':'1',
    'catZhida':'1',
    'lossless':'0',
    'flag_qc':'0',
    'p':str(i+1),
    'n':'10',
    'w':'孙燕姿',   #可变
    'g_tk':'5381',
    'loginUin':'943413047',
    'hostUin':'0',
    'format':'json',
    'inCharset':'utf8',
    'outCharset':'utf-8',
    'notice':'0',
    'platform':'yqq.json',
    'needNewCode':'0'
    }

    res=requests.get(url,params=params)
    #上面get的网址是network中,client_search_cp...中Header中URL的网址,而且是?问号之前的内容,?问号之后是参数params里的内容
    js=res.json()  #使用json()方法将response对象转换为字典/列表
    list_m=js['data']['song']['list']
    for m in list_m:
        print('歌名:《'+m['name']+'》')
        print('专辑:《'+m['album']['title']+'》')
        print('播放链接:https://y.qq.com/n/yqq/song/'+m['mid']+'.html\n')

 

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

要通过爬虫获取快手视频的播放量,需要理解快手网站的数据结构和 API 接口。通常情况下,视频的播放量等信息是通过平台的后端接口返回的 JSON 数据中包含的。以下是实现该目标的基本步骤和技术要点。 ### 1. 分析快手网页或 App 的请求 快手的视频播放量数据通常存储在其后端服务器中,并通过特定的 API 请求返回给前端展示。可以通过浏览器的开发者工具(F12)或抓包工具(如 Charles 或 Fiddler)来分析视频页面的网络请求- 打开快手网页或使用其移动端 App。 - 进入某个视频的播放页面。 - 使用开发者工具查看“Network”面板,找到相关的 XHR/Fetch 请求- 筛选出包含视频 ID 和播放量信息的请求 URL。 ### 2. 提取播放量字段 在找到正确的 API 后,可以观察返回的 JSON 数据结构。播放量通常以 `play_count`、`view_count` 或类似的字段名存在。例如: ```json { "video": { "id": "1234567890", "play_count": 15000, "like_count": 3000, "comment_count": 200 } } ``` ### 3. Python 爬虫代码 使用 `requests` 库向上述 API 发送 HTTP 请求,并解析返回的 JSON 数据提取播放量信息。以下是一个示例代码: ```python import requests # 替换为实际的 API 地址 url = "https://api.kuaishou.com/rest/c/feed/video/detail" # 设置请求头,模拟浏览器访问 headers = { "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", "Referer": "https://www.kuaishou.com/" } # 视频 ID(可以从视频页面 URL 中提取) video_id = "1234567890" # 构造请求参数 params = { "videoId": video_id } # 发送 GET 请求 response = requests.get(url, headers=headers, params=params) # 解析 JSON 数据 if response.status_code == 200: data = response.json() play_count = data["video"]["play_count"] print(f"视频播放量: {play_count}") else: print("请求失败") ``` ### 4. 处理反爬虫机制 快手可能会采用多种反爬虫技术,包括但不限于 IP 封锁、验证码、请求频率限制等。为了提高爬虫的稳定性,可以采取以下措施: - **使用代理 IP 池**:从第三方服务购买动态代理 IP,避免单一 IP 被封。 - **设置请求间隔**:在代码中加入 `time.sleep()` 函数,防止频繁请求触发风控机制。 - **模拟登录**:部分 API 需要用户登录状态,可以通过模拟登录获取 Cookie 并在后续请求中携带。 ### 5. 数据存储与分析 将获取到的播放量数据存储到本地数据库或文件中,便于后续分析。可以使用 `pandas` 库进行数据清洗和可视化处理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值