爬虫案例:毛毛组案例

依赖

  • pip install requests
  • pip install base64
  • pip install pycrytodome

URL

目标网站

https://www.maomaozu.com/#/build

工具网站

  • https://curlconverter.com/

使用方法也非常简单(参考网站教学),需要复制以curl(bash)格式,粘贴到网址,就可以半自动化的完成,请求代码的构建

Curlconverter.com 是一个工具,可以将 curl 命令转换成多种编程语言的代码片段,如 Python、JavaScript 和 PHP 等。该工具支持多种语言和框架,提供不同类型 HTTP 请求(如 GET、POST 等)的示例。所有转换都在用户的浏览器中进行,确保隐私。用户还可以从浏览器开发工具中复制 curl 命令并轻松进行转换。

  • https://it-tools.tech/

在本次案例,我们需要对爬取的数据进行json转化为toml格式方便获得所需数据

IT-Tools 是一个网站,提供各种在线工具,帮助 IT 专业人士和开发人员简化常见任务。其工具包括编码和解码、数据格式转换、生成哈希值和执行计算等。访问网站以获取更多信息

代码

import requests
import base64
import json
import time
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad

# 目标网站:https://www.maomaozu.com/#/build

cookies = {
    'PHPSESSID': 'up6gke39b9s01slbsio4fqj9en',
    'Hm_lvt_6cd598ca665714ffcd8aca3aafc5e0dc': '1713688780',
    'Hm_lpvt_6cd598ca665714ffcd8aca3aafc5e0dc': '1713689090',
    'SECKEY_ABVK': '5kQXirwIrjHWtO1RWF8YhXpwJvuVbZjj3OIK3M8kzGw%3D',
    'BMAP_SECKEY': 'jCbK4eShwM10v4L40RjDhvps7WmJvpqniC9qByzukM7Is2MnYn8yaE5PF_eFjSR8pcAnvaN1BGQGURFfyo0ENeRtnz_sJx1dJhRhzlxORuxDtFIjYKzdI288lJTjkfIFmbZNz8Pk4KBTj2BVK1AX-bBtqdT_eFiwysUElAgn7Ol3AQ9_Jkm9YoKeIyutC68xtI2fiWU8rbvDBQRDMs9NxA',
}

headers = {
    'Accept': '*/*',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    'Connection': 'keep-alive',
    'Content-Type': 'application/json; charset=UTF-8',
    'Origin': 'https://www.maomaozu.com',
    'Referer': 'https://www.maomaozu.com/',
    '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/125.0.0.0 Safari/537.36 Edg/125.0.0.0',
    'sec-ch-ua': '"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
}

timeStamp = int(time.time() * 1000)  # 获取当前时间戳(毫秒)

for page in range(1, 10):
    # 准备请求数据
    request_data = {"Type": 0, "page": page, "expire": timeStamp}
    request_data = json.dumps(request_data).encode()  # 转为 JSON 字符串并编码为字节

    # AES 加密
    key = '55b3b62613aef1a0'.encode()
    iv = '55b3b62613aef1a0'.encode()
    aes = AES.new(key, AES.MODE_CBC, iv)

    # 填充数据以符合 AES 加密要求
    request_data = pad(request_data, AES.block_size)

    # 加密数据
    request_data = aes.encrypt(request_data)

    # 对加密数据进行 base64 编码
    request_data = base64.b64encode(request_data).decode()

    # 发送 POST 请求
    response = requests.post('https://www.maomaozu.com/index/build.json', cookies=cookies, headers=headers, data=request_data)

    # 处理响应数据
    response_data = response.text

    # 对响应数据进行 base64 解码
    response_data = base64.b64decode(response_data)

    # AES 解密
    key = '0a1fea31626b3b55'.encode()
    iv = '0a1fea31626b3b55'.encode()
    aes = AES.new(key, AES.MODE_CBC, iv)

    # 解密数据
    response_data = aes.decrypt(response_data)

    # 去除填充以符合 AES 解密要求
    response_data = unpad(response_data, AES.block_size).decode()

     # 等待一秒,以避免频繁请求导致被封
    time.sleep(1) 



# 将所有数据存储格式到文本文件中,后续使用json-->toml格式,方便处理所需数据
with open('data.txt', 'w', encoding='utf-8') as file:
    file.write(response_data)

print("数据已成功写入 data.txt 文件")

使用it-tools转化文本格式为toml
在这里插入图片描述

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值