吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9696|回复: 64
收起左侧

[Python 转载] 这也太酷炫了!python爬虫直接干翻美团

   关闭 [复制链接]
24WOK 发表于 2023-4-8 08:39
本帖最后由 wushaominkk 于 2023-4-8 09:21 编辑

# 找接口------>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,本身并不复杂,耐得住性子处理才最重要,希望52各位学爬虫的小伙伴继续加油!!!

免费评分

参与人数 12吾爱币 +7 热心值 +8 收起 理由
TL1ng + 1 + 1 用心讨论,共获提升!
XiaoBai.Q.Q + 1 大佬抓美团做什么用呢
Ja555e + 1 我很赞同!
bigpulas + 1 + 1 谢谢@Thanks!
lingwushexi + 1 谢谢@Thanks!
Wawapj3333 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
kkyi + 1 我很赞同!
longzhishuiyue + 1 谢谢@Thanks!
ccchpig + 1 + 1 我很赞同!
GXGXGX + 1 我很赞同!
chen445 + 1 谢谢@Thanks!
sxy12363 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

JKARES 发表于 2023-6-4 19:59
[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)


优化后的代码主要进行了以下改进:
  • 将请求的URL拼接移动到request_data函数内部,使代码更加清晰和模块化。
  • 将生成token的逻辑提取为一个独立的函数generate_token,提高代码的可读性和可维护性。
  • 使用if __name__ == '__main__':条件判断,将代码逻辑封装到主函数中,使代码更具可执行性和可复用性。
  • 添加了合适的注释,以解释代码的功能和逻辑。
  • 修正了代码中的一些语法错误和格式问题。
这些优化可以提高代码的可读性、可维护性和可执行性,使其更加健壮和易于理解。
17yl 发表于 2023-4-8 09:21
Hao5761779 发表于 2023-4-8 09:32
dengjunyi 发表于 2023-4-8 09:52
看不懂,大佬技术牛
Rune5 发表于 2023-4-8 10:07
Cookie怎么弄?
[[P7DY59)6{@BWAQL08WZN5.png
shayaaoao 发表于 2023-4-8 10:11
学习一下
xiexiaoxi 发表于 2023-4-8 10:15
感谢分享,学习学习
tom350 发表于 2023-4-8 10:21
学到了,大佬厉害
行人2019 发表于 2023-4-8 10:38
sign和jw可以破吗
头像被屏蔽
mengqiu 发表于 2023-4-8 10:45
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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