我Python采集了新榜热门内容,原来这就是别人能成为自媒体大佬的秘密!

大家好,我是辣条,这是我爬虫系列的第25篇。

今天爬取的是一个自媒体人宝藏网站。

编辑区

 编辑区包含了文章编辑的所有功能,重点是所有功能、素材都是免费的,像你写博客或者微信公众号都有用过这种类似的编辑器,但是免费的不多吧。

写作机器人

 这个功能是很多自媒体小白的福利,想写作?但是自己没文字功底,这个神奇能帮助你描写文章,强烈推荐大家。

什么值得写

 这个功能也非常强大,比如你想写科技领域的内容,这什么值得写功能就会推荐你最新该类型的热门文章。

这里只推荐三个功能,不写篇幅去介绍其他功能了,自己可以探索一下,直接进入今天的主题,爬取什么值得写推荐的热榜文章,学习一下从事自媒体别人是怎么写博客的。

采集目标

网址:新榜编辑

image.png

工具使用

开发工具:pycharm 开发环境:python3.7, Windows10 使用工具包:requests,execjs

项目思路解析

今天这个网页虽然比较的实用,各位大大在之后也可以在当前网页挑选合适的文章内容进行书写,但是问题是啥呢,网页数据是加密的,辣条真的是夜不能寐。

image.png

首先爬虫常规操作找到目标数据的接口位置,打开抓包工具查看数据的加载方式,打开抓包工具的一瞬间数据没了

image.png

当前网页应该是做了开发者工具检测,把抓包工具以单独页面打开

image.png

单独打开就没有什么问题了,找到文件接口数据确定请求的url地址

image.png

数据的接口
https://edit.newrank.cn/xdnphb/editor/articleMaterial/searchArticleMaterial

当前接口的请求方式为post,post请求就意味着需要传递数据

image.png

item能明显看出来数据数据加载的格式、日期、种类,数据的翻页就是通过日期来进行,nonece和xyz是加密数据,进行简单判断nonece、xyz应该都是md5加密 先找到nonece、xyz的加密位置,可以通过全局搜索也可以xhr断点调试的方法,只要能找到数据的加密位置就行,辣条这里就直接通过xhr断点找寻数据的发送位置

image.png

通过抓包工具右边的call stack找到后续的执行过程一个个点击查看找到发送数据的是在哪里生成的 传递的data数据为h 现在我们只需要找到h的生成位置就好了,h是由u得来的u是c函数生成的,nonece,zyz就是是在c函数生成

image.png

给位置数据打上断点,查看数据的加载规律,nonece为u方法生成的9个参数里的随机值

image.png

xyz加密的数据是o加上&nonece和nonece的值,o的参数是网址加上appkey在加上item的值

"/xdnphb/editor/articleMaterial/searchArticleMaterial?AppKey=joker&item={"type":"lakh","period":"1#2021-09-18","order":"2","extra":"全部","ranklist_id":"","weixin_id":"","start_time":"2021-09-18"}&nonce=6a65cad87"

image.png

xyz加密的代码有点多,这是何等的卧槽

image.png

image.png

直接补环境好了,不去硬扣js代码了复制js代码到本地,先把加密函数给拿过来,把整个t函数拿到本地,自己运行尝试一下

image.png

大功告成,数据的加密方式,加密规则都解决了,现在用Python整合,对目标网址发送请求,获取数据进行保存,各位大佬js源码可以自行扣取,只要t函数就可以了。

效果展示

 

简易源码分享

import execjs
import requests
import csv
​
nonce = execjs.compile(open('nonce.js').read()).call('u')
date = input('请输入你需要的日期(2021-07-19):')
xyz_code = '/xdnphb/editor/articleMaterial/searchArticleMaterial?AppKey=joker&item={"type":"lakh","period":"1#%s","order":"2","extra":"全部","ranklist_id":"","weixin_id":"","start_time":"2021-09-04"}&nonce=%s' % (date, nonce)
print(xyz_code)
xyz = execjs.compile(open('nonce.js').read()).call('t', xyz_code)
​
​
print(xyz)
url = "https://edit.newrank.cn/xdnphb/editor/articleMaterial/searchArticleMaterial"
​
data = {
    'item': '{"type":"lakh","period":"1#%s","order":"2","extra":"全部","ranklist_id":"","weixin_id":"","start_time":"2021-09-04"}' % date,
    'nonce': nonce,
    'xyz': xyz
}
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
    'referer': 'https://edit.newrank.cn/?module=article',
}
​
response = requests.post(url, headers=headers, data=data).json()
​
datas = response['value']['datas']
# print(response)
with open('新榜编辑器.csv', 'a', newline='', encoding='utf-8')as f:
​
    for data in datas:
        # print(data)
        csv_data = csv.DictWriter(f, fieldnames=['summary', 'publicTime', 'originalFlag', 'author', 'orderNum', 'likeCount', 'clicksCount', 'downloadStatus', 'title', 'type', 'url'])
        csv_data.writerow(data)

 

行业资料:添加即可领取PPT模板、简历模板、行业经典书籍PDF。
面试题库:历年经典,热乎的大厂面试真题,持续更新中,添加获取。
学习资料:含Python、爬虫、数据分析、算法等学习视频和文档,添加获取
 交流加群:大佬指点迷津,你的问题往往有人遇到过,技术互助交流。

 


posted @ 2021-09-24 13:57  白云吃辣条  阅读(239)  评论(0编辑  收藏  举报