句子控爬虫
躺在黄昏朦胧的光里,想想现在堕落的自己,回想起曾经那些平常而又普通的事…突然觉得之前自己期待的未来有点可笑…,这是摘子句子控中的一段话,今天就爬一下句子空。话不多说直接进入主题
- 先分析一下网页结构,网站地址
可见首页就是一个列表页,还是先抓翻页的包,看看翻页数据接口是什么样子的
滚动到最下面点击点击加载更多数据,可见数据接口,返回的数据也正确。看一下请求参数中有单个值
start应该是控制页数的每页加10(多翻几页可以分析出来)timestamp是一个时间戳,sign不知道是什么,全局索引一下看看有没有关键字
可见js中是有这个sign参数的,根据着一行js代码可以知道t请求参数的sign是Ro方法对t的params进行处理,那么就debug一下看看是不是在着一行生成了具体操作了点什么
断点可见在这一行停住了就是里了,
打印可见这个参数就是页数和时间戳通过Ro方法生成
点进Ro方法中可见源码。那就可以直接把这段js拿到python中使用execjs执行,要缺啥补啥,或者使用python模拟生成sign参数也是可以的。ok,但这里逻辑就清晰了
直接编辑好每页的参数然后发请求获取每条数据就ok了
headers = {
'authority': 'api.juzikong.com',
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
'origin': 'https://www.juzikong.com',
'pragma': 'no-cache',
'referer': 'https://www.juzikong.com/',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36',
}
params = {
'start': f'{start}',
'timestamp': f'{timestamp}',
'sign': f'{sign}',
}
response = requests.get('https://api.juzikong.com/n0/home/posts/recommend', params=params, headers=headers).json()['data']['list']
for res in response:
content = res['content']
print(content)
ok,笑容洋溢在脸上
转载自:https://juejin.cn/post/7225782772279197753