Python爬虫入门教程 54-100 博客园等博客网站自动评论器

简介: 爬虫背景爬虫最核心的问题就是解决重复操作,当一件事情可以重复的进行的时候,就可以用爬虫来解决这个问题,今天要实现的一个基本需求是完成“博客园“ 博客的自动评论,其实原理是非常简单的,提炼一下需求基本需求登录博客园<不实现,登录单独编写博客>调用评论接口返回请求结果确定流程之后,基本...

爬虫背景

爬虫最核心的问题就是解决重复操作,当一件事情可以重复的进行的时候,就可以用爬虫来解决这个问题,今天要实现的一个基本需求是完成“博客园“ 博客的自动评论,其实原理是非常简单的,提炼一下需求

基本需求

  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种写法,重点是你如何去获取,一般情况下,手动获取即可

登录采用的是人机识别验证,这个我单独写一篇博文去研究,目前阶段,你手动获取即可

image

其他的参数,在加载博客的时候,就可以用网页解析相关的知识解析出来,没有难度

如何你想要做成全自动化的,也可以,只需要控制发帖时间随机,发帖内容随机即可,加上一个时间戳也是一个非常不错的解决方案

发帖成功

测试中一定要解析返回的JSON字符串,确定里面的成功和异常信息

{
  'IsSuccess': True,
  'Message': '<div class="comment_my_posted">... ...</div>',
  'Duration': '171'
}

博客园自动评价Over

所有网站的评论原理是相通的,你可以自行研究掘金,CSDN,简书等各种文章类平台,自动评论需要的是大量的用户,动态的IP,其余都不是问题~ 本文章仅供学习,切勿用于恶意用途。

相关文章
|
4天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
2天前
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
28天前
|
数据采集 JSON 数据格式
Python爬虫:京东商品评论内容
京东商品评论接口为商家和消费者提供了重要工具。商家可分析评论优化产品,消费者则依赖评论做出购买决策。该接口通过HTTP请求获取评论内容、时间、点赞数等数据,支持分页和筛选好评、中评、差评。Python示例代码展示了如何调用接口并处理返回的JSON数据。应用场景包括产品优化、消费者决策辅助、市场竞争分析及舆情监测。
|
1月前
|
数据采集 供应链 API
Python爬虫与1688图片搜索API接口:深度解析与显著收益
在电子商务领域,数据是驱动业务决策的核心。阿里巴巴旗下的1688平台作为全球领先的B2B市场,提供了丰富的API接口,特别是图片搜索API(`item_search_img`),允许开发者通过上传图片搜索相似商品。本文介绍如何结合Python爬虫技术高效利用该接口,提升搜索效率和用户体验,助力企业实现自动化商品搜索、库存管理优化、竞品监控与定价策略调整等,显著提高运营效率和市场竞争力。
83 3
|
2月前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
2月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
126 80
|
22天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
51 14

热门文章

最新文章