用CSDN写文章发表后,发现阅读量太少,怎么办?
用python写一个定时访问CSDN文章的脚本,将其放在云服务器上,用screen
将该脚本挂后台运行即可,过不了多久,你会发现你的博客文章的阅读量就会10000+。
python3开发环境,需要安装 requests, 安装命令:
pip install requests
, linux下请用 pip3
# coding=utf8
'''
文件名: csnd.py
作者: PyJun
'''
import sys
import os
import re
import requests
import time
import threading
import logging
from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
IDS = [93797976, 93668952, 93602097, 85249743, 86671668, 94026503]
URL = 'https://blog.csdn.net/qq_16166591/article/details/'
URLS = [URL+str(id) for id in IDS]
HEAD = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:59.0) Gecko/20100101 Firefox/59.0',
"Referer":"https://www.baidu.com/",
}
TITLE = re.compile(r'(.*) ') # 正则匹配文章标题
MATCH1 = re.compile(r'阅读数 (\d+)') # 正则匹配文章阅读数
MATCH2 = re.compile(r'访问: \s*' ) # 正则匹配总访问量
TIME = 60 # 每个60秒访问一次
LOGFILE = 'log.txt' # 日志文件
def getLoger():
logger = logging.getLogger('log')
logger.setLevel(logging.INFO)
formatter = logging.Formatter(fmt="%(asctime)s %(name)s:%(levelname)s:%(message)s", datefmt="%Y-%m-%d %H:%M:%S")
fh = logging.FileHandler(LOGFILE, 'w', encoding='utf-8')
fh.setLevel(logging.INFO)
fh.setFormatter(formatter)
logger.addHandler(fh)
ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.INFO)
ch.setFormatter(formatter)
logger.addHandler(ch)
return logger
def visit_csdn(url, lock, logger, cnt = None):
response = requests.get(url, headers=HEAD)
text = response.text
title = re.search(TITLE, text)[1].split(' ')[0]
result1 = re.search(MATCH1, text)
result2 = re.search(MATCH2, text)
if cnt and lock.acquire(TIME): # lock.acquire() 申请锁
infostr = "成功访问 {:05d}次, 阅读数: {:05d}, 访问量: {:05d} --> {}".format(cnt, int(result1[1]), int(result2[1]), repr(title))
logger.info(infostr)
lock.release() # lock.release() 释放锁
time.sleep(TIME)
return text
def main():
cnt = 0
logger = getLoger()
with ThreadPoolExecutor(max_workers = len(IDS)) as pool:
lock = threading.Lock()
while True:
cnt += 1
for url in URLS:
pool.submit(visit_csdn, url, lock, logger, cnt)
time.sleep(1)
if __name__ == '__main__':
main()
# test()
GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
# 常用screen参数
screen -S name # 新建一个叫 name 的session
screen -ls # 列出当前所有的session
screen -r name # 回到 name 这个session
screen -d name # 远程detach某个session
screen -d -r yourname # 结束当前session并回到yourname这个session
exit # 退出当前 session
# 快捷键
Ctrl + a + c # 创建一个新的运行shell的窗口并切换到该窗口
Ctrl + a + d # deactive, 暂时离开当前session
Ctrl + a + n # 切换到下一个 window
Ctrl + a + p # 切换到前一个 window
Ctrl + a + 0..9 # 切换到第 0..9 个 window
kill number # 强制杀死, 使会话变成 dead 状态
screen -wipe # 删除所有 dead 的会话。
# 先将文件上传至云服务器,具体上传可以用 Xftp
root@vultr:~/ubuntu/CSDN刷流量# ll
-rw-r--r-- 1 root root 2334 Jun 28 18:11 csdn.py
-rw-r--r-- 1 root root 34839 Jun 28 19:01 log.txt
# 新建一个 csdn 会话
root@vultr:~/ubuntu/CSDN刷流量# screen -S csdn
# 用 Python3 运行脚本, 这里得保证系统已经安装python3环境和requests库
root@vultr:~/ubuntu/CSDN刷流量# python3 csdn.py
# 最后使用快捷键 Ctrl + a + d 挂起会话
所有的输出信息都会保存在 log.txt 文件内,同时控制台也会有输出,如图:
大功告成!