Python爬蟲入門教程 54-100 博客園等博客網站自動評論器

来源:https://www.cnblogs.com/happymeng/archive/2019/03/28/10612596.html
-Advertisement-
Play Games

爬蟲背景 爬蟲最核心的問題就是解決重覆操作,當一件事情可以重覆的進行的時候,就可以用爬蟲來解決這個問題,今天要實現的一個基本需求是完成“博客園“ 博客的自動評論,其實原理是非常簡單的,提煉一下需求 基本需求 1. 登錄博客園 2. 調用評論介面 3. 返回請求結果 確定流程之後,基本就是找突破口的環 ...


爬蟲背景

爬蟲最核心的問題就是解決重覆操作,當一件事情可以重覆的進行的時候,就可以用爬蟲來解決這個問題,今天要實現的一個基本需求是完成“博客園“ 博客的自動評論,其實原理是非常簡單的,提煉一下需求

基本需求

  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,其餘都不是問題~ 本文章僅供學習,切勿用於惡意用途。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文是BUAA OO課程Unit1在課程講授、三次作業完成、自測和互測時發現的問題,以及傾聽別人的思路分享所引起個人的一些思考的總結性博客。本文第二部分介紹三次作業的設計思路,主要以類圖的形式展現,並有簡單的優劣分析;第三部分為程式代碼複雜度的分析(二、三兩部分為基於度量的對自己程式結構的分析);第... ...
  • 一、前言 經過一個月來的學習,我從對面向對象一無所知到逐漸入門,圍繞著“多項式求導”,對面向對象的特性進行了探索。 我對面向對象印象最深的兩句話就是“萬物皆對象”和“高內聚、低耦合”,這三次作業也是儘量貫徹了這兩句話。 我們的作業從第一次的僅含冪函數的求導,到第二次包含正餘弦函數,再到最後函數可以嵌 ...
  • 一. 基於度量的程式結構分析 1. 第一次作業 這次作業是我上手的第一個java程式,使用了4個類來實現功能。多項式採用兩個arraylist來存,繫數和冪指數一一對應。 四個類分別為 Poly類,代表表達式; PolyDiff類,代表求導運算; PolyParse類,封裝了格式檢查,encodin ...
  • 前言 好的代碼需要有高內聚、低耦合、易擴展且擴展改動小等特點。說實話,我入行很久之後,才知道這些設計原則的名字,但是我並不覺得陌生,反而有一種理所當然的感覺。這得感謝自學時網路上前輩們推薦的書籍,培養了自己的代碼潔癖,還得感謝轉行後的第一個東家!以下只是我的理解,如有錯誤,請指正。 單一職責原則 顧 ...
  • return語句 return語句用來從一個函數中 返回 即跳出函數。當然也可以從函數中返回一個值。 運行結果 DocStrings Python有一個很奇妙的特性,稱為 文檔字元串 ,它通常被簡稱為 docstrings 。DocStrings是一個重要的工具,由於它幫助你的程式文檔更加簡單易懂, ...
  • 列表[List] 元組(truple) 字典{dict} 生成器(generator) 帶有 yield 的函數在 Python 中被稱之為 generator(生成器) 迭代器 iterator 迭代器是訪問集合元素的一種方式。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代 ...
  • 預設參數 對於參數有時候我們希望他是可選的,前面介紹了函數柯里化,當然還有其他的解決方案。如果不想給某些參數提供值的話,就讓這寫參數使用預設值。在函數定義的時候給參數賦值使用(參數,參數=值......),從而給形參指定預設值。 註意預設參數的值是一個不可變的參數(也就是說預設參數是一個確定的值)。 ...
  • 有時候,我們想要獲取一個對象關聯關係的數量,但是我們不要所有的關聯對象,我們只想要符合規則的那些關聯對象的數量。 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...