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'<title>(.*)</title>') 		# 正则匹配文章标题
MATCH1 = re.compile(r'阅读数 (\d+)')			# 正则匹配文章阅读数
MATCH2 = re.compile(r'<dt>访问:</dt>\s*<dd title="(\d+)">')  # 正则匹配总访问量
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 文件内,同时控制台也会有输出,如图:

img

大功告成!

发布了12 篇原创文章 · 获赞 57 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_16166591/article/details/94035505