爬蟲背景 爬蟲最核心的問題就是解決重覆操作,當一件事情可以重覆的進行的時候,就可以用爬蟲來解決這個問題,今天要實現的一個基本需求是完成“博客園“ 博客的自動評論,其實原理是非常簡單的,提煉一下需求 基本需求 1. 登錄博客園 2. 調用評論介面 3. 返回請求結果 確定流程之後,基本就是找突破口的環 ...
爬蟲背景
爬蟲最核心的問題就是解決重覆操作,當一件事情可以重覆的進行的時候,就可以用爬蟲來解決這個問題,今天要實現的一個基本需求是完成“博客園“ 博客的自動評論,其實原理是非常簡單的,提煉一下需求
基本需求
- 登錄博客園<不實現,登錄單獨編寫博客>
- 調用評論介面
- 返回請求結果
確定流程之後,基本就是找突破口的環節了
實際的去評論一下,然後不管你用什麼抓包工具都可以,只要抓取到你想要的數據,即可
評論API如下
Request URL: https://www.cnblogs.com/mvc/PostComment/Add.aspx
Request Method: POST
POST URL 有了,下麵就是參數的問題
我隨便找了一個請求的參數
{"blogApp":"wuxiaobin","postId":10510784,"body":"繼續研究","parentCommentId":0}
分析參數
blogApp 是博主的用戶昵稱
postid 是博文的ID
body 評論主體
parentCommentid 看參數命名知道應該是指的回覆的那條ID
分析到這裡,你就可以開始模擬請求了,一般情況下是不成功的,因為我們沒有登錄,不過,代碼先寫起來
觀察請求頭參數
請求頭基本包含一些用戶信息,必備部分如下,剩下的就是cookies部分了
origin: https://www.cnblogs.com
referer: https://www.cnblogs.com/
user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64)
x-requested-with: XMLHttpRequest
編寫代碼
import requests
import json
class CnBlogs(object):
def __init__(self):
self._url = "https://www.cnblogs.com/mvc/PostComment/Add.aspx"
def run(self):
params = {
"blogApp":"wuxiaobin", # 博主ID
"postId":10510784, # 評論博文的ID
"body":"繼續研究b", # 評論內容
"parentCommentId":0}
headers = {
"origin": "https://www.cnblogs.com",
"referer": "https://www.cnblogs.com/",
"user-agent": "瀏覽器UA",
"x-requested-with": "XMLHttpRequest",
"cookie":".CNBlogsCookie=重要參數;"
}
res = requests.post("https://www.cnblogs.com/mvc/PostComment/Add.aspx",data=params,headers=headers)
print(json.loads(res.text))
if __name__ == '__main__':
cnblogs = CnBlogs()
cnblogs.run()
重要提示
經過我的測試,發現判斷博客園用戶是否登錄,關鍵的是cookie 這個在我之前的博客有涉及,2種寫法,重點是你如何去獲取,一般情況下,手動獲取即可
登錄採用的是人機識別驗證,這個我單獨寫一篇博文去研究,目前階段,你手動獲取即可
其他的參數,在載入博客的時候,就可以用網頁解析相關的知識解析出來,沒有難度
如何你想要做成全自動化的,也可以,只需要控制發帖時間隨機,發帖內容隨機即可,加上一個時間戳也是一個非常不錯的解決方案
發帖成功
測試中一定要解析返回的JSON字元串,確定裡面的成功和異常信息
{
'IsSuccess': True,
'Message': '<div class="comment_my_posted">... ...</div>',
'Duration': '171'
}
博客園自動評價Over
所有網站的評論原理是相通的,你可以自行研究掘金,CSDN,簡書等各種文章類平臺,自動評論需要的是大量的用戶,動態的IP,其餘都不是問題~ 本文章僅供學習,切勿用於惡意用途。