用python实现提高自己博客访问量

news2025/7/5 11:28:19

文章目录

  • 前言
  • 1、整体逻辑
  • 2、代码实现


前言

你还在为自己博客的访问量不高而烦恼吗?我教你如何提高访问量
我发现CSDN上,自己点击自己的博客,可以增加访问量,但是在一定时间内点击同一篇博客,访问量无法再次增加,需要等待一段时间。
通过这个切入点,我们完全可以实现一个非常简单的python小程序,来实现点击博客,提高访问量

1、整体逻辑

本次python小程序的核心就是使用selenium UI测试框架(没有安装的小伙伴需要安装)加上Chrome驱动,Chrome驱动要和Chrome版本大体一致,用其他驱动也可以,例如火狐

第一步
建立一个python项目,并在该项目中建立一个python文件,名字随便(我的叫做increaseTraffic.py),并在当前目录下建立一个文本文件(用于保存xpath,取名为xpath)

第二步:打开浏览器,点击自己博客主页,并按下fn+F12(或者直接按F12)打开开发者模式

在这里插入图片描述

把鼠标移动到自己的第一篇文章上,右击,再点击检查

在这里插入图片描述

将鼠标放到开发者模式中的高亮部分,右击,再将鼠标放到Copy上,左边就会弹出侧边框,里面有一个CopyXpath,然后点击。将这个Xpath拷贝到之前建好的xpath文件中。
再次对第二篇文章进行重复操作,比较两者的Xpath。

例如我的前两篇文章的Xpath:

//*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]/article/a/div[1]/h4
//*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[2]/article/a/div[1]/h4

仔细对比,只有/article前面的div[1]里面的数字(可以理解为id)不同,代表类似于文章的标号,假如你有50篇文章,里面的id就是1-50,利用这个特性,就不要保存大量的Xpath,使用字符串拼接即可

因此将Xpath分为两部分(id前半部分和后半部分)保存到xpath文件中,例如

在这里插入图片描述

第二步:
读取xpath文件中的内容,并放在一个列表中

def Readfile():
    with open("./xpath", 'r', encoding="UTF-8") as f:
        # 不需要读取换行符,因为要进行xpath的拼接
        filetxt = f.read().splitlines()
    return filetxt

# 将text.txt的数据读到列表中
filetxt = Readfile()
str1 = filetxt[0]
str2 = filetxt[1]

这里需要注意的是不能直接调用readlines(),因为它会读取文件中每行内容的换行,但我们不需要这个换行。

以下是读取换行和不读取换行最终拼接的Xpath的区别:

#不读取换行
//*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]/article/a/div[1]/h4

#读取换行
//*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[
1]/article/a/div[1]/h4

第三步

打开Chrome浏览器,并访问指定的url链接

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://blog.csdn.net/qq_56044032?spm=1000.2115.3001.5343")

这里的url链接一定要填自己的,否则就是再给我刷访问量,哈哈

使用Xpath定位并点击有一个前提,右侧的滚动条要逐步向下滚动,否则有些文章可能没有加载,就会导致错误。
除此之外,点击一篇文章后需要关闭该文件,并且driver对象需要进行窗口切换,否则会将主窗口关掉
最后就是当滑动到底部,并且最后一篇文章点击并关闭后,滚动条需要回到最上方

while True:
    for i in range(1, 80):
        if(i == 36 or i == 38):
            driver.execute_script("window.scrollBy(0,143)")
            continue
        driver.find_element_by_xpath(str1 + str(i) + str2).click()
        print(str1 + str(i) + str2)
        driver.switch_to.window(driver.window_handles[1])
        time.sleep(2)
        driver.close()
        driver.switch_to.window(driver.window_handles[0])
        driver.execute_script("window.scrollBy(0,143)")
        time.sleep(2)
    driver.execute_script("var q=document.documentElement.scrollTop=0")
    time.sleep(2)

for中的range是文章数量,做闭右开区间

if(i == 36 or i == 38):
    driver.execute_script("window.scrollBy(0,143)")
    continue

这段代码的含义就是跳过除文章外的动态,因为我发了两次动态,它们的是36和38

在这里插入图片描述

它们的Xpath分别是
//[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[36]/div/a/div[1]/div[1]/div/p
和//
[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[38]/div/a/div[1]/div[1]/div/p

显然和文章的Xpath不同
跳过点击,但也要进行向下滚动
driver.execute_script(“window.scrollBy(0,143)”) 就是向下滑动143个像素点,保持点击的文章始终在屏幕的中间部分

driver.switch_to.window(driver.window_handles[1])
driver.switch_to.window(driver.window_handles[0])

这两句代码意为切换窗口

driver.execute_script("var q=document.documentElement.scrollTop=0")

这句代码意味,当全部文章都已经点击完毕,需要滑动到最上面,再开始下一轮的点击

2、代码实现

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException



def Readfile():
    with open("./xpath", 'r', encoding="UTF-8") as f:
        # 不需要读取换行符,因为要进行xpath的拼接
        filetxt = f.read().splitlines()
    return filetxt

# 将text.txt的数据读到列表中
filetxt = Readfile()
str1 = filetxt[0]
str2 = filetxt[1]


# 打开Chrome浏览器,访问指定的url
driver = webdriver.Chrome()
# Chrome浏览器窗口最大化
driver.maximize_window()
# 到达url链接
driver.get("https://blog.csdn.net/qq_56044032?spm=1000.2115.3001.5343")
time.sleep(3)

while True:
    for i in range(1, 80):
        if(i == 36 or i == 38):
            driver.execute_script("window.scrollBy(0,143)")
            continue
        # 拼接文章的Xpath
        driver.find_element_by_xpath(str1 + str(i) + str2).click()
        print(str1 + str(i) + str2)
        # 进行子窗口切换,以至于不是关闭的主窗口
        driver.switch_to.window(driver.window_handles[1])
        time.sleep(2)
        # 关闭子窗口
        driver.close()
        # 切换主窗口
        driver.switch_to.window(driver.window_handles[0])
        # 向下滑动
        driver.execute_script("window.scrollBy(0,143)")
        time.sleep(2)
    # 回到顶部
    driver.execute_script("var q=document.documentElement.scrollTop=0")
    time.sleep(2)

driver.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/5339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3 - <script setup> 单文件组件语法糖的使用教程示例 (SFC)

概念 它是在 单文件组件 (SFC) 中使用组合式 API 的编译时语法糖&#xff0c;解决 vue3 中 setup() 需要繁琐将声明的变量、函数以及 import 引入的内容通过 return 向外暴露&#xff0c;才能在<template> 使用的问题。 小示例 是不是感觉似懂非懂&#xff1f;先来看个…

【蓝桥杯Web】第十四届蓝桥杯(Web 应用开发)模拟赛 1 期-大学组 | 精品题解

&#x1f4d1; 目录&#x1f53d; 前言1️⃣ 数据类型检测2️⃣ 渐变色背景生成器3️⃣ 水果叠叠乐4️⃣ element-ui 组件二次封装5️⃣ http 模块应用6️⃣ 新课上线啦7️⃣ 成语学习8️⃣ 学海无涯9️⃣ 逃离二向箔&#x1f51f; 梅楼封的一天&#x1f53c; 结语&#x1f53d…

Qt编写4K/8K大分辨率播放器(8K占用1%CPU)

一、前言 在经过多种内核的洗礼以后&#xff0c;逐渐对不同内核的不同音视频文件和视频流进行大量的对比测试&#xff0c;比如测试对各种格式的支持性&#xff0c;对各种网络流的支持程度&#xff0c;在同一个地址下占用的CPU/GPU资源比对&#xff0c;最终发现播放器这块mpv优…

【数据结构】单链表(不带头结点)基本操作的实现(C语言)

&#x1f680; 作者简介&#xff1a;一名在后端领域学习&#xff0c;并渴望能够学有所成的追梦人。 &#x1f40c; 个人主页&#xff1a;蜗牛牛啊 &#x1f525; 系列专栏&#xff1a;&#x1f6f9;初出茅庐C语言、&#x1f6f4;数据结构 &#x1f4d5; 学习格言&#xff1a;博…

阿里巴巴任庚:数字城市建设的“两核三转和四横五纵”

阿里巴巴集团副总裁 阿里云智能中国区总裁 任庚 推进数字中国建设是党和国家制定的重要战略&#xff0c;是以数字化转型整体驱动生产方式、生活方式和治理方式的变革&#xff1b;数字城市建设是数字中国建设的重要组成部分&#xff0c;是数字中国建设的先行实践&#xff0c;准确…

【Turtle合集】火遍抖音的五款魔法阵终于被我找到了(初代萌王,童年的小樱回来了)

导语 ​ 小编在昨天看了一个非常好玩的充电器&#xff0c;就是魔法阵充电器。这种感觉&#xff0c;完全是满满的中二气 息啊。魔法阵开启&#xff01;哈哈哈&#xff08;感觉有点儿幼稚&#xff0c;但是还挺有趣的&#xff09; ​ 魔法阵一直都出现在小说、动漫、电影、电视…

MySQL-无锁读

快照 快照是一个指定时间点的数据表示&#xff0c;也就是&#xff0c;在指定时间点的数据版本&#xff0c;即使其他事务对源数据版本做出修改&#xff0c;快照对应的数据版本也不会发生变化&#xff0c;主要是用于事务隔离级别中提供一致性读。 一致性读 一致性读是指一个读…

Chrome调试工具和Emmet语法

调试工具的使用&#xff1a; 打开页面&#xff0c;鼠标"右击"检查&#xff1a; Ctrl滚轮可以放大开发工具代码的大小&#xff1a; 右边CSS样式可以改变数值&#xff08;左右箭头或者直接输入&#xff09;和查看颜色&#xff0c;以此来即时改变网页的元素设置 Ctr…

【C】语言文件操作(二)

&#x1f648;个人主页&#xff1a; 阿伟t &#x1f449;系列专栏&#xff1a;【C语言–大佬之路】 &#x1f388;今日心语&#xff1a;越忙&#xff0c;越要沉住气&#xff01; 继【C】语言文件操作&#xff08;一&#xff09;中我们详细地介绍了文件的顺序读写等一系列函数&…

【数据结构与算法】ArrayList与顺序表

✨个人主页&#xff1a;bit me ✨当前专栏&#xff1a;数据结构 ✨每日一语&#xff1a;上海就是商海&#xff0c;北京就是背景&#xff0c;誓言就是失言&#xff0c;彩礼就是财力&#xff0c;理想就是离乡&#xff0c;而平民就要拼命 ArrayList与顺序表&#x1f4a6;一.线性表…

刷题笔记之十 (小易的升级之路+找出字符串中第一个只出现一次的字符+洗牌+MP3光标位置)

目录 1.存取任意指定序号的元素和在最后进行插入和删除运算,利用顺序表存储最节省时间 2. 数据结构中具有记忆功能的是栈 3. 递归程序的优化一般为 尾递归优化 4.二叉树遍历,前中后序遍历用到的是栈,而层序遍历用到的队列 5. 将两个各有n个元素的有序表归并成一个有序表,最…

Mybatis的增删改查操作

增删改查操作对于我们程序员来说是最基本也是最重要的操作.那么在Mybatis框架下如何对jdbc中的数据进行增删改查操作? 首先,在介绍之前,我们先来了解一下我们在进行增删改查操作过程中会遇到的各种属性和重要方法: 属性 1.namespace: 称为命名空间,用来将dao与Mapper进行绑…

[Python教程]三位数倒序

前言 最近博主也是没有什么时间来写文章&#xff0c;估计已经快两个月没写新文章了吧&#xff0c;这不&#xff0c;今天有空&#xff0c;所以想着写一篇文章。 今天的文章主要是面对Python刚刚入门的读者写的 涉及知识点 数据的基本运算字符串与数字的拼接输入与打印 相信…

Python正则表达式(持续更新,各种字符串筛选,总有一款适合您当前的功能)

前言 整个文章都是以精华部分为主&#xff0c;主要分文2个部分&#xff1a; 1、python的【re】正则表达式使用方法。 2、【re】正则表达式以及对应的demo。 第一部分让你知道【re】的几个函数的区别&#xff0c;更好的匹配项目中的需求。 第二部分让你快速的匹配具体需要的正则…

学习笔记-java代码审计-表达式注入

java代码审计-表达式注入 0x01漏洞挖掘 spel spel表达式有三种用法&#xff1a; 注解 value("#{表达式}") public String arg; 这种一般是写死在代码中的&#xff0c;不是关注的重点。 xml <bean id"Bean1" class"com.test.xxx"><prop…

Jquery

目录 一、基本介绍 二、下载地址 三、基本使用 四、jQuery对象和dom对象 五、jQuery选择器 六、jQuery的DOM操作 七、总结 相关文章 JSP的使用JSP的使用 JSON&AjaxJSON&Ajax一、基本介绍jQuery 是一个快速的&#xff0c;简洁的 javaScript 库&#xff0c;使用户能更方便…

DINO学习笔记

DINO学习笔记 DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection Abstract 我们提出了DINO(DETR with Improved deNoising anchOr boxes)&#xff0c;一种先进的端到端对象检测器。DINO采用对比的去噪训练方法、混合查询选择方法进行锚点初…

【蓝桥杯专项】动态规划_背包问题合集(Java)

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【蓝桥杯专项】 ✈️✈️本篇内容:动态规划_背包问题合集&#xff01; &#x1f680;&#x1f680;码云仓库gitee&#xff1a;Java数据结构代码存放! ⛵⛵作者简介…

【C++笔试强训】第二十二天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6;&a…

动态内存管理

目录 内存中的栈区和堆区 malloc free calloc realloc 内存中的栈区和堆区 我们知道php的底层是C (任何语言其实都可以分为大同小异的几块) 而C语言的内存模型分为5个区&#xff1a;栈区、堆区、静态区、常量区、代码区。每个区存储的内容如下&#xff1a; 1、栈区&…