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

五包辣条! 2021-10-28 19:10:45
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、爬虫、数据分析、算法等学习视频和文档,添加获取
 交流加群:大佬指点迷津,你的问题往往有人遇到过,技术互助交流。

 领取

版权声明
本文为[五包辣条!]所创,转载请带上原文链接,感谢
https://blog.csdn.net/ai19970205/article/details/120384253

  1. Python - 字符串作为文件
  2. Python - 重新格式化段落
  3. 4.Python-常用语句
  4. 【Python】基于FastAPI的Restful规范实践
  5. 【Python】FastAPI脚手架:规范FastAPI后端接口项目开发
  6. 【Python】单元测试实践内部指南
  7. Django开发中使用Cache缓存提升10倍效率
  8. python如何重复执行程序命令而不是一次退出
  9. python 编写程序题使用for循环
  10. 一道简单的python作业题,就是不能运行
  11. 使用python回答,望有人来帮
  12. 用python插入日期格式到mysql数据库中,一直运行不了。
  13. 关于以下Python问题如何解决
  14. Use Python to help the financial sister solve the PDF splitting. The sister said it was great...
  15. Comment résoudre les problèmes Python suivants
  16. 如何使用python建立列表?新手入门
  17. python 3d画图库matplotlib,第一次用
  18. python 3d畫圖庫matplotlib,第一次用
  19. Python 3D painting Library matplotlib, utilisé pour la première fois
  20. Comment créer une liste en utilisant python? Débutant
  21. python定义列表 新手入门级别
  22. Liste de définition Python débutant
  23. 如何用Python实现,急!!xdm
  24. 如何用Python實現,急!!xdm
  25. Comment implémenter en python, urgent!! Xdm
  26. 新猿木子李:0基础学python培训教程 Python操作Redis之hash类型
  27. python导入模块变量后,打印的值固定不变了,大老们怎么破。
  28. Why is my rust slower than Python!
  29. 用Python给喜欢的女孩写一个办公小工具,她说棒极了!
  30. python中\t是空一个tab,那这个1.2后面怎么没空格?
  31. Il y a un onglet vide en python, alors pourquoi n'y a - t - il pas d'espace après ce 1.2?
  32. 关于python中pygame.display.set_mode()的一点小问题
  33. 猜我能否用Python编程抢到茅台?已经全部开源到GitHub了
  34. python数据分析numpy 补充短试题
  35. 2W + word long article, an article on literacy python, numpy and pandas, recommended collection!
  36. Python培训-自动化运维常用库
  37. On the magical usage and principle of weak reference in Python
  38. Formation python - bibliothèques d'exploitation et de maintenance automatisées
  39. Python培训-HTTP与HTTPS之间的区别
  40. Python有哪些高级特性?
  41. Python代码阅读(第25篇):将多行字符串拆分成列表
  42. Quelles sont les fonctionnalités avancées de python?
  43. 运用python程序编写下面的的代码
  44. Python代码阅读(第25篇):将多行字符串拆分成列表
  45. 初学者 可以帮我看一下为什么Python程序运行不了吗
  46. 初學者 可以幫我看一下為什麼Python程序運行不了嗎
  47. Python代碼閱讀(第25篇):將多行字符串拆分成列錶
  48. Les débutants peuvent - ils m'aider à voir pourquoi le programme Python ne fonctionne pas?
  49. Lecture du Code Python (article 25): diviser les chaînes multilignes en listes
  50. Écrivez le code suivant en utilisant le programme Python
  51. Python exercises
  52. Python exercises
  53. Python exercises
  54. 随机试验数据函数统计分析python
  55. Python after class exercises (junior / October 11, 2021)
  56. python使用cv2.imread()读取图片失败
  57. python使用cv2.imread()讀取圖片失敗
  58. Python n'a pas lu l'image en utilisant cv2.imread ()
  59. Error debugging is accurate to lines, match case pattern matching... The official version of Python 3.10 is really friendly
  60. 100 basic Python interview questions Part II (41-60)