大家好,我是辣條,這是我爬蟲系列的第25篇,
今天爬取的是一個自媒體人寶藏網站,
編輯區

編輯區包含了文章編輯的所有功能,重點是所有功能、素材都是免費的,像你寫博客或者微信公眾號都有用過這種類似的編輯器,但是免費的不多吧,
寫作機器人

這個功能是很多自媒體小白的福利,想寫作?但是自己沒文字功底,這個神奇能幫助你描寫文章,強烈推薦大家,
什么值得寫

這個功能也非常強大,比如你想寫科技領域的內容,這什么值得寫功能就會推薦你最新該型別的熱門文章,
這里只推薦三個功能,不寫篇幅去介紹其他功能了,自己可以探索一下,直接進入今天的主題,爬取什么值得寫推薦的熱榜文章,學習一下從事自媒體別人是怎么寫博客的,
采集目標
網址:新榜編輯

工具使用
開發工具:pycharm 開發環境:python3.7, Windows10 使用工具包:requests,execjs
專案思路決議
今天這個網頁雖然比較的實用,各位大大在之后也可以在當前網頁挑選合適的文章內容進行書寫,但是問題是啥呢,網頁資料是加密的,辣條真的是夜不能寐,

首先爬蟲常規操作找到目標資料的介面位置,打開抓包工具查看資料的加載方式,打開抓包工具的一瞬間資料沒了

當前網頁應該是做了開發者工具檢測,把抓包工具以單獨頁面打開

單獨打開就沒有什么問題了,找到檔案介面資料確定請求的url地址

資料的介面 https://edit.newrank.cn/xdnphb/editor/articleMaterial/searchArticleMaterial
當前介面的請求方式為post,post請求就意味著需要傳遞資料

item能明顯看出來資料資料加載的格式、日期、種類,資料的翻頁就是通過日期來進行,nonece和xyz是加密資料,進行簡單判斷nonece、xyz應該都是md5加密 先找到nonece、xyz的加密位置,可以通過全域搜索也可以xhr斷點除錯的方法,只要能找到資料的加密位置就行,辣條這里就直接通過xhr斷點找尋資料的發送位置

通過抓包工具右邊的call stack找到后續的執行程序一個個點擊查看找到發送資料的是在哪里生成的 傳遞的data資料為h 現在我們只需要找到h的生成位置就好了,h是由u得來的u是c函式生成的,nonece,zyz就是是在c函式生成

給位置資料打上斷點,查看資料的加載規律,nonece為u方法生成的9個引數里的隨機值

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"

xyz加密的代碼有點多,這是何等的臥槽


直接補環境好了,不去硬扣js代碼了復制js代碼到本地,先把加密函式給拿過來,把整個t函式拿到本地,自己運行嘗試一下

大功告成,資料的加密方式,加密規則都解決了,現在用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://www.uj5u.com/ruanti/302545.html
標籤:其他
