史诗级干货-python爬虫之增加CSDN访问量
史诗级干货-python爬虫之增加CSDN访问量
搜索微信公众号:‘AI-ming3526’或者’计算机视觉这件小事’ 获取更多算法、机器学习干货
csdn:https://blog.csdn.net/baidu_31657889/
github:https://github.com/aimi-cn/AILearners
文章初衷:
- 最近CSDN官方出了一个流量扶持计划,针对原创文章进行百度推广,我尝试推了几篇,效果也不是很好,或者是自己文章水平不够,太水~就想着增加一下自己CSDN的访问量
- 想写出更优质的博客技术文章,不再为了访问量去写文章。
本文参照CSDN一个大佬的文章:https://blog.csdn.net/Giser_D/article/details/97472274
加上了使用代理访问,可以尽量防止被官方封号,更安全一些。
步骤:
在国内髙匿代理IP网站:http://www.xicidaili.com/nn/ 取到ip。
通过解析csdn博客首页html 获得相应文章的a标签链接,使用代理对其进行访问。
Python代码实现:
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File : csdn.py
@Time : 2019/08/26 09:54:47
@Author : xiao ming
@Version : 1.0
@Contact : xiaoming3526@gmail.com
@Desc : None
@github : https://github.com/aimi-cn/AILearners
'''
# 导入相关爬虫库和解析xml库即可
import time
from pyquery import PyQuery as pq
import requests
from bs4 import BeautifulSoup
import random
from fake_useragent import UserAgent
from lxml import etree
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
# 爬取csdn类
class ScrapyMyCSDN:
''' class for csdn'''
def __init__(self,blogname):
'''init 类似于构造函数 param[in]:blogname:博客名'''
csdn_url = 'https://blog.csdn.net/' #常规csdnurl
self.blogurl = csdn_url+blogname #拼接字符串成需要爬取的主页url
''' Func:获取写了多少篇原创文章 '''
''' return:写了多少篇原创文章'''
def getOriginalArticalNums(self,proxies):
main_response = requests.get(self.blogurl,proxies=proxies)
# 判断是否成功获取 (根据状态码来判断)
if main_response.status_code == 200:
print('获取成功')
self.main_html = main_response.text
main_doc = pq(self.main_html)
mainpage_str = main_doc.text() #页面信息去除标签信息
origin_position = mainpage_str.index('原创') #找到原创的位置
end_position = mainpage_str.index('原创',origin_position+1) #最终的位置,即原创底下是数字多少篇博文
self.blog_nums = ''
# 获取写的博客数目
for num in range(3,10):
#判断为空格 则跳出循环
if mainpage_str[end_position + num].isspace() == True:
break
self.blog_nums += mainpage_str[end_position + num]
print(type(str(self.blog_nums)))
cur_blog_nums = (int((self.blog_nums))) #获得当前博客文章数量
return cur_blog_nums #返回博文数量
else:
print('爬取失败')
return 0 #返回0 说明博文数为0或者爬取失败
''' Func:分页'''
''' param[in]:nums:博文数 '''
''' return: 需要爬取的页数'''
def getScrapyPageNums(self,nums):
self.blog_original_nums = nums
if nums == 0:
print('它没写文章,0页啊!')
return 0
else:
print('现在开始计算')
cur_blog = nums/20 # 获得精确的页码
cur_read_page = int(nums/20) #保留整数
# 进行比对
if cur_blog > cur_read_page:
self.blog_original_nums = cur_read_page + 1
print('你需要爬取 %d'%self.blog_original_nums + '页')
return self.blog_original_nums #返回的数字
else:
self.blog_original_nums = cur_read_page
print('你需要爬取 %d'%self.blog_original_nums + '页')
return self.blog_original_nums
'''Func:开始爬取,实际就是刷浏览量hhh'''
'''param[in]:page_num:需要爬取的页数'''
'''return:0:浏览量刷失败'''
def beginToScrapy(self,page_num,proxies):
if page_num == 0:
print('连原创博客都不写 爬个鬼!')
return 0
else:
for nums in range(1,page_num+1):
self.cur_article_url = self.blogurl + '/article/list/%d'%nums+'?t=1&' #拼接字符串
article_doc = requests.get(self.cur_article_url,proxies=proxies) #访问该网站
# 先判断是否成功访问
if article_doc.status_code == 200:
print('成功访问网站%s'%self.cur_article_url)
#进行解析
cur_page_html = article_doc.text
#print(cur_page_html)
soup = BeautifulSoup(cur_page_html,'html.parser')
for link in soup.find_all('p',class_="content"):
#print(link.find('a')['href'])
requests.get(link.find('a')['href'],proxies=proxies) #进行访问
else:
print('访问失败')
print('访问结束')
# IP地址取自国内髙匿代理IP网站:http://www.xicidaili.com/nn/
#功能:爬取IP存入ip_list列表
def get_ip_list(url, headers):
web_data = requests.get(url, headers=headers)
soup = BeautifulSoup(web_data.text, 'lxml')
ips = soup.find_all('tr')
ip_list = []
for i in range(1, len(ips)):
ip_info = ips[i]
tds = ip_info.find_all('td') #tr标签中获取td标签数据
if not tds[8].text.find('天')==-1:
ip_list.append(tds[1].text + ':' + tds[2].text)
return ip_list
#功能:1,将ip_list中的IP写入IP.txt文件中
# 2,获取随机IP,并将随机IP返回
def get_random_ip(ip_list):
proxy_list = []
for ip in ip_list:
proxy_list.append(ip)
f=open('IP.txt','a+',encoding='utf-8')
f.write('http://' + ip)
f.write('\n')
f.close()
proxy_ip = random.choice(proxy_list)
proxies = {'http':proxy_ip}
return proxies
if __name__ == '__main__':
for i in range(1,3):
url = 'http://www.xicidaili.com/wt/{}'.format(i)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
}
ip_list = get_ip_list(url, headers=headers)
proxies = get_random_ip(ip_list)
print(proxies)
#如何调用该类 参数换成你的csdn名字就行
mycsdn = ScrapyMyCSDN('baidu_31657889') #初始化类 参数为博客名
cur_write_nums = mycsdn.getOriginalArticalNums(proxies) #得到写了多少篇文章
cur_blog_page = mycsdn.getScrapyPageNums(cur_write_nums) #cur_blog_page:返回需要爬取的页数
mycsdn.beginToScrapy(cur_blog_page,proxies)
time.sleep(20) # 给它休息时间 还是怕被封号的
需要用到的pip包
我的python环境为3.6.5版本及以上需要安装相关库
pip install pyquery
pip install requests
pip install bs4
pip install fake_useragent
pip install lxml
pip install ssl
使用方法
修改主函数第一行中range(1,3),这代表只取两个随机代理,然后让我们的csdn所有原创文章浏览量加一遍,循环两次,修改range后面的值就可以增加循环次数了。
mycsdn = ScrapyMyCSDN('baidu_31657889') #参数为博客名,参数换成你的csdn名字就行
后记
个人感觉提高博客质量才是重点,但是我们可以找到比较好的机会来蹭个热度,爬一下自己感觉非常不错的文章。
当然我们要记得适可而止,网上不乏有很多人的号被封的。别忘记我们写博客的初衷是什么,对访问量这个东西不用太在意了。
代码下载地址:https://github.com/aimi-cn/AILearners/tree/master/src/py3.x/others/fm/19.08.26/csdn.py
史诗级干货-python爬虫之增加CSDN访问量的更多相关文章
- Linux&&Mac 自动增加CSDN访问量
我心里面有两个小人. 一个叫愧疚,对CSDN这么一个分享知识的平台的愧疚,因为我正在做一件对不起CSDN的事情. 一个叫虚荣,对CSDN访问量的渴望过渡使得我踏出了这一步. 这一步,踏入了深渊.. 最 ...
- Python爬虫简单实现CSDN博客文章标题列表
Python爬虫简单实现CSDN博客文章标题列表 操作步骤: 分析接口,怎么获取数据? 模拟接口,尝试提取数据 封装接口函数,实现函数调用. 1.分析接口 打开Chrome浏览器,开启开发者工具(F1 ...
- 利用Python爬虫刷新某网站访问量
前言:前一段时间看到有博友写了爬虫去刷新博客访问量一篇文章,当时还觉得蛮有意思的,就保存了一下,但是当我昨天准备复现的时候居然发现文章404了.所以本篇文章仅供学习交流,严禁用于商业用途 很多人学习p ...
- Python+爬虫+xlwings发现CSDN个人博客热门文章
☞ ░ 前往老猿Python博文目录 ░ 一.引言 最近几天老猿博客的访问量出现了比较大的增长,从常规的1000-3000之间波动的范围一下子翻了将近一倍,粉丝增长从日均10-40人也增长了差不多一倍 ...
- Python爬虫抓取csdn博客
昨天晚上为了下载保存某位csdn大牛的所有博文,写了一个爬虫来自己主动抓取文章并保存到txt文本,当然也能够 保存到html网页中. 这样就能够不用Ctrl+C 和Ctrl+V了,很方便.抓取别的站点 ...
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...
- 用python爬虫监控CSDN博客阅读量
作为一个博客新人,对自己博客的访问量也是很在意的,刚好在学python爬虫,所以正好利用一下,写一个python程序来监控博客文章访问量 效果 代码会自动爬取文章列表,并且获取标题和访问量,写入exc ...
- Python爬虫实战——反爬策略之模拟登录【CSDN】
在<Python爬虫实战-- Request对象之header伪装策略>中,我们就已经讲到:=="在header当中,我们经常会添加两个参数--cookie 和 User-Age ...
- Python 爬虫入门实战
1. 前言 首先自我介绍一下,我是一个做 Java 的开发人员,从今年下半年开始,一直在各大技术博客网站发表自己的一些技术文章,差不多有几个月了,之前在 cnblog 博客园加了网站统计代码,看到每天 ...
随机推荐
- 【VS开发】【C/C++开发】memcpy和memmove的区别
memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下: void *memcpy(void *dst, const void ...
- Nginx是什么及作用?代理和反向代理解析
一:介绍 nginx是一个高性能的HTTP和反向代理服务器,其特点是占用内存少,并发能力强. 二:名词介绍 代理服务器: 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络 ...
- 学习数据结构Day3
栈和队列 栈是一种线性结构,相比数组 他对应的操作是数组的子集 只能从一端进入,也只能从一端取出 这一端成为栈顶 栈是一种先进后出的数据结构,Last In First Out(LIFO) 程序调用的 ...
- 重回ubutntu12.04小记(装完ubuntu做的几件事)
原来一直是在windows下用虚拟机跑redhat 和debian 做实验和一些工程,以前也装过ubuntu和windows双系统,但是换电脑后,就一直懒得捣鼓了. 现在,由于长期需要在linux上做 ...
- python实战项目 — 爬取 妹子图网,保存图片到本地
重点: 1. 用def函数 2. 使用 os.path.dirname("路径保存") , 实现每组图片保存在独立的文件夹中 方法1: import requests from l ...
- C++学习笔记 之 循环
循环 循环语句允许我们多次执行一个语句或者语句组.(插入流程图) 循环类型 C++为我们提供的循环类型如下: 循环类型 描述 while循环 当给定条件为真时,重复语句或语句组.它会在执行循环主体之前 ...
- HTML常用技巧
1. 为网页链接添加快捷键:accesskey 属性 https://zhidao.baidu.com/question/2267343500557447508.html 2. 键盘事件设置快捷键:h ...
- 学习C语言深入解剖笔记之关键字的秘密
C语言关键字的秘密 重点说明: 1.if(略) 2.void ①C语言规定只有相同类型的指针才可以相互赋值 ②void*指针作为左值用于“接收”任意类型的指针 ③void*指针作为右值赋值给其它指针时 ...
- Tensorflow基本概念笔记
一.TensorFlow使用简单,部署快捷 TensorFlow使用数据流图(计算图)来规划计算流程,可以将计算映射到不同的硬件和操作平台.凭借着统一的架构,TensorFlow可以方便的部署剑各种平 ...
- 中国大学MOOC-翁恺-C语言程序设计习题集(二)
04-0. 求符合给定条件的整数集(15)给定不超过6的正整数A,考虑从A开始的连续4个数字.请输出所有由它们组成的无重复数字的3位数. 输入格式: 输入在一行中给出A. 输出格式: 输出满足条件的的 ...