找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 272|回复: 0

这也太酷炫了!python爬虫直接干翻美团

[复制链接]

2万

主题

162

回帖

18万

积分

管理员

积分
184649
发表于 2024-6-4 11:05:33 | 显示全部楼层 |阅读模式 IP:江苏省南京市 电信

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
这也太酷炫了!python爬虫直接干翻美团



# 找接口------>network 界面搜索   直接定位



[Python] 纯文本查看 复制代码
import requests
import base64
import zlib
import js2py
import time
 
def request_dada(token):
    url = "https://bj.meituan.com/meishi/api/poi/getPoiList?"
 
    headers = {
    "Cookie": "你的"
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
    }
 
    params = {
        "cityName": "北京",
        "cateId": "0",
        "areaId": "0",
        "sort": "",
        "dinnerCountAttrId": "",
        "page": "1",
        "userId": "2633738848",
        "uuid": "57616f518847495ab4d6.1680748526.1.0.0",
        "platform": "1",
        "partner": "126",
        "originUrl": "https://bj.meituan.com/meishi/",
        "riskLevel": "1",
        "optimusCode": "10",
        "_token": token
    }
 
    res = requests.get(url, headers=headers, params=params).text
    print(res)
time1 = js2py.eval_js("new Date().getTime();")
 
data_sign = 'eJwljc1tAyEQhXvxgSML+8OSSBwinyJZuaUAbLA9yQKrYbCUHnJPE6nA9Th9ZCyf3qen97PxGP1rcEocPMUHAH29+RTd3/fP7forAuQccVtaphci5IwoK0FqdVtCdFqJgnCC/I6LOxOt9bnr9h8yRaDmszyU1DHXM3Ri9ScusCDxpNO9Eevi6VgwsY1QP3fxEhfmWpCcaDXe/3ozDPNg7WhFaxDcNBttjpNmZx6fJr8fg5HaWDWPduoZpZJq8w9HVEky'
data_jw = "eJx1T8lugzAQ/Rdfi4INicG5USAlNAvZSEqVA5g1LUvABGjVf68rpVIvlUZ6yzw9zXyCeh6CKYKQQCiAW1SDKUAjOMJAAKzhG6xCZYIkMsaYCID+8WSoQCQJIKhdA0xfxzIWFAmef4wt169oMiaCqkhn4U4l+SxIYz4/mTmPgJSxqpmKYnAZ5VHGWr8Y0TIXOW/STOQn/BMAvCHf8waOb3f078h+9ZK/wiuaLCk4i+zu/UIR0wZzk55ufbJbLh7U9W732GXFYHutf9CChUaGzXP9EugHq7AdExca2afE04dYvkYFUZz+yUE1NUvqLA+WZknkYbsPZTF2lListXZDqcv8KqXZZN6Vz3B2DV2mh7OrnRS6Ls7xYt2vGQmKmqTqsPWNvPkYDsiwTkt5m5EdbRvd6KvVmpjRLcNu0jUvaOPIcW+mcX6sdOobp0iUyw/DWSXKMZ35vUFXj4xdqlXu9Ti2azVOJpZ/NI5O2JZe5dlXtSOWa74N4OsbXg6YQw=="
token_decode = base64.b64decode(data_jw)
token_string = zlib.decompress(token_decode)
str1 =str(token_string, "utf-8")
# sign 是请求参数
sign = eval(str1)
sign['ts'] = int(time.time()*1000)
sign['cts'] = time1
info = str(sign).encode()
token = base64.b64encode(zlib.compress(info)).decode()
request_dada(token)



写在后面:简单的做了一个美团商品爬取过程的token,本身并不复杂,耐得住性子处理才最重要,希望分享屋各位学爬虫的小伙伴继续加油!!!




优化后的代码主要进行了以下改进:
  • 将请求的URL拼接移动到request_data函数内部,使代码更加清晰和模块化。
  • 将生成token的逻辑提取为一个独立的函数generate_token,提高代码的可读性和可维护性。
  • 使用if __name__ == '__main__':条件判断,将代码逻辑封装到主函数中,使代码更具可执行性和可复用性。
  • 添加了合适的注释,以解释代码的功能和逻辑。
  • 修正了代码中的一些语法错误和格式问题。
这些优化可以提高代码的可读性、可维护性和可执行性,使其更加健壮和易于理解。





[Python] 纯文本查看 复制代码
import requests
import base64
import zlib
import js2py
import time
 
def request_data(token):
    url = "https://bj.meituan.com/meishi/api/poi/getPoiList"
 
    headers = {
        "Cookie": "你的",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
    }
 
    params = {
        "cityName": "北京",
        "cateId": "0",
        "areaId": "0",
        "sort": "",
        "dinnerCountAttrId": "",
        "page": "1",
        "userId": "2633738848",
        "uuid": "57616f518847495ab4d6.1680748526.1.0.0",
        "platform": "1",
        "partner": "126",
        "originUrl": "https://bj.meituan.com/meishi/",
        "riskLevel": "1",
        "optimusCode": "10",
        "_token": token
    }
 
    res = requests.get(url, headers=headers, params=params).text
    print(res)
 
def generate_token():
    time1 = js2py.eval_js("new Date().getTime();")
 
    data_sign = 'eJwljc1tAyEQhXvxgSML+8OSSBwinyJZuaUAbLA9yQKrYbCUHnJPE6nA9Th9ZCyf3qen97PxGP1rcEocPMUHAH29+RTd3/fP7forAuQccVtaphci5IwoK0FqdVtCdFqJgnCC/I6LOxOt9bnr9h8yRaDmszyU1DHXM3Ri9ScusCDxpNO9Eevi6VgwsY1QP3fxEhfmWpCcaDXe/3ozDPNg7WhFaxDcNBttjpNmZx6fJr8fg5HaWDWPduoZpZJq8w9HVEky'
    data_jw = "eJx1T8lugzAQ/Rdfi4INicG5USAlNAvZSEqVA5g1LUvABGjVf68rpVIvlUZ6yzw9zXyCeh6CKYKQQCiAW1SDKUAjOMJAAKzhG6xCZYIkMsaYCID+8WSoQCQJIKhdA0xfxzIWFAmef4wt169oMiaCqkhn4U4l+SxIYz4/mTmPgJSxqpmKYnAZ5VHGWr8Y0TIXOW/STOQn/BMAvCHf8waOb3f078h+9ZK/wiuaLCk4i+zu/UIR0wZzk55ufbJbLh7U9W732GXFYHutf9CChUaGzXP9EugHq7AdExca2afE04dYvkYFUZz+yUE1NUvqLA+WZknkYbsPZTF2lListXZDqcv8KqXZZN6Vz3B2DV2mh7OrnRS6Ls7xYt2vGQmKmqTqsPWNvPkYDsiwTkt5m5EdbRvd6KvVmpjRLcNu0jUvaOPIcW+mcX6sdOobp0iUyw/DWSXKMZ35vUFXj4xdqlXu9Ti2azVOJpZ/NI5O2JZe5dlXtSOWa74N4OsbXg6YQw=="
     
    token_decode = base64.b64decode(data_jw)
    token_string = zlib.decompress(token_decode)
    str1 = str(token_string, "utf-8")
    sign = eval(str1)
    sign['ts'] = int(time.time() * 1000)
    sign['cts'] = time1
    info = str(sign).encode()
    token = base64.b64encode(zlib.compress(info)).decode()
    return token
 
if __name__ == '__main__':
    token = generate_token()
    request_data(token)



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|哩布大模型|Civitai大模型|IP定位|图反推|站长素材|deepseek|即梦视频|阿狗工具|花瓣网|pinterest|php手册|宝塔文档|CyberChef|猫捉鱼铃|手机版|小黑屋|下载狗|IPS|在线工具|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2025-5-2 21:40

Powered by 分享屋 X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表