吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2569|回复: 13
收起左侧

[Python 原创] 爬取脉脉网数据

[复制链接]
孤霜情冷点朱砂 发表于 2023-7-10 19:08
本帖最后由 孤霜情冷点朱砂 于 2023-7-10 19:18 编辑

1.png
URL:https://maimai.cn/

技术需求:1.需要登录才能访问,使用人工登陆+获取cookie的方式绕过登录
                 2.需要Ajax进行异步访问
                 3.通过抓包获取结果


代码如下:
[Python] 纯文本查看 复制代码
import requests
import json

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
    "Cookie": "", #填入自己的cookie
    "X-Csrf-Token": "12136vux-ycWY72FoKjbUsFfLYfqgVBQoRlA",
}
# https://maimai.cn/sdk/web/content/get_list?api=gossip%2Fv3%2Fsquare&u=239689746&page=2&before_id=0
# ?后面的数据不需要复制,那是载荷中提供的参数

url = "https://maimai.cn/sdk/web/content/get_list"

def crawl_page(num):
    param = {
        "api": "gossip/v3/square",
        "u": "239689746",
        "page": f"{num}",
        "before_id": "0"
    }
    r = requests.get(url, headers=headers, params=param)
    data = json.loads(r.text)
    datas = []
    for text in data["list"]:
        # print(text['text'])
        datas.append(text["text"])
    return datas

with open("脉脉结果.txt","w",encoding="utf8")as f:
    for page in range(11):
        print("craw page %s"%page)
        datas = crawl_page(page)
        f.write("\n".join(datas)+"\n")


需要注意的点:
1.headers中的数据需要根据经验来设置,实在不行可以将请求标头的所有内容写入进去。
2.爬取的网页是通过Ajax异步加载的,所以爬取的网页需要自己F12查看。
3.网址?后面的数据不需要复制,那是载荷中提供的参数。requests.get(url, headers=headers, params=param)
4.得到的json结果需要使用json.loads()解析为python对象。

免费评分

参与人数 4吾爱币 +7 热心值 +4 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
fei578800 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
echoaku + 1 + 1 谢谢@Thanks!
fast123 + 1 我很赞同!

查看全部评分

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

jidesheng6 发表于 2023-7-10 20:31
headers中的参数,一般类似token这种是一定要写的,但是这个token来源可能是在前端页面中的某个标签中隐藏的,每次刷新都是新的token

host参数也是概率很大的一个参数,有些网站会有host头验证,这个一般是漏洞扫描要求的,会用来预防host头注入

一个概率比较低的就是accept头,某些网站会用form表单来传递数据,但是你看payload是json的,如果傻乎乎传了json,没改accept头就会被拒绝,这个概率很低很低,20%左右的概率


requests中已经有json模块了,你不需要重新load,除非返回的文本有问题,需要你重新处理成正确的json字符串再load,这时候就用json模块,如果requests回来数据正常,拿到respone对象以后,直接用.json方法就可以解析了。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
孤霜情冷点朱砂 + 1 + 1 热心回复!

查看全部评分

Sandwiches 发表于 2023-7-10 20:04
都是一些比较简单的爬虫,想学点深奥一点的,例如逆向,手机端
yizhimei123 发表于 2023-7-10 21:19
wsxb 发表于 2023-7-10 23:38
怎么弄LY的
echoaku 发表于 2023-7-11 09:13
厉害,感谢分享
 楼主| 孤霜情冷点朱砂 发表于 2023-7-11 10:36
jidesheng6 发表于 2023-7-10 20:31
headers中的参数,一般类似token这种是一定要写的,但是这个token来源可能是在前端页面中的某个标签中隐藏 ...

感谢大佬~,但是不用json.loads(),获取到的r.text是一个字符串对象,不方便遍历。所以改为json对象的。
jidesheng6 发表于 2023-7-11 10:43
孤霜情冷点朱砂 发表于 2023-7-11 10:36
感谢大佬~,但是不用json.loads(),获取到的r.text是一个字符串对象,不方便遍历。所以改为json对象的。

r.text就是普通文本,可以直接用r.json()来试试,如果你从结构上看属于json就直接用,这一步相当于requests帮你执行了import json;json.loads(r.text),只是简化一点,你的写法也是可以的。
 楼主| 孤霜情冷点朱砂 发表于 2023-7-11 11:09
jidesheng6 发表于 2023-7-11 10:43
r.text就是普通文本,可以直接用r.json()来试试,如果你从结构上看属于json就直接用,这一步相当于reques ...

是的是的,感谢感谢~
O2H2O 发表于 2023-7-12 08:51
还不会用Ajax……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 22:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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