Python爬虫增加CSDN浏览量

Question?

用CSDN写文章发表后,发现阅读量太少,怎么办?

Answer

用python写一个定时访问CSDN文章的脚本,将其放在云服务器上,用screen将该脚本挂后台运行即可,过不了多久,你会发现你的博客文章的阅读量就会10000+。

python脚本

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()

screen简介:

GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

常用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 文件内,同时控制台也会有输出,如图:

Python爬虫增加CSDN浏览量_第1张图片

大功告成!

你可能感兴趣的:(爬虫)