AI

人工智能

史诗级干货-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博客访问量_史诗级干货-python爬虫之增加CSDN访问量相关推荐

  1. python 面试题 博客园_常见的python面试问题1

    雷锋网按:本文为 AI 研习社编译的技术博客,原文 Top 35 Python Interview Questions and Answers in 2018 ,作者 DataFlair Team. ...

  2. python博客园_用Python向博客园发布新文章

    最近在开发一个博客系统,经常把写的东西放在自己网站的博客上(之前写在Onenote),然后我在博客园也申请了一个博客,就有了同样一篇文章,我需要复制粘贴排版分别提交两次的情况.于是我就想能不能在我的网 ...

  3. python博客主题_博客园SimpleMemary主题美化教程

    修改cnblogs的主题为SimpleMemary 我的博客->设置->博客皮肤->SimpleMemary 编辑CSS 打开下面的地址,将样式代码粘贴到页面定制CSS框内 http ...

  4. python 博客程序_项目1——博客系统 - Python测试和开发 - OSCHINA - 中文开源技术交流社区...

    一.绪言 今天又来更新博文了,学习Java也已经有一段时间了,经过这段时间的学习,我对Java有了更深一层的理解.从刚开始的HelloWorld到了现在的小型网页项目,这中间也经历了很多.话不多说,下 ...

  5. python金融量化书籍_超强干货 | Python金融数据量化分析教程+机器学习电子书

    如今Python语言的学习已经上升到了国家战略的层面上.Python语言是人工智能的基础语言,国家相关教育部门对于"人工智能普及"格外重视,不仅将Python列入到小学.中学和高中 ...

  6. python 在线客服_如何利用Python实现简单全双工在线客服系统!这个有点东西!...

    在之前的一篇文章中: 为美多商城(Django2.0.4)添加基于websocket的实时通信,主动推送,聊天室及客服系统 ,详细介绍了websocket协议以及结合Django如何实现各种功能,本次 ...

  7. python贪吃蛇毕业设计_【干货|python项目实例——贪吃蛇】- 环球网校

    [摘要]当今世界充满了各种数据,而python是其中一种的重要组成部分.然而,若想其有所应用,我们需要对这些python理论进行实践.其中包含很多有趣的的过程,然后将其用于某些方面.其中一种应用就是p ...

  8. python搭建博客系统_用Pelican快速搭建极简静态博客系统

    我一直建议每个开发者都要有写博客记笔记的习惯,一来可以沉淀知识,二来可以帮助别人,我使用过很多博客平台,也用Python开发过博客系统,就这么个东西折腾好几年,一直找不到理想的产品,直到我用Pelic ...

  9. python博客下载本地文件_解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了...

    1.今天网上下载一个博客项目,发现本地访问,js,css加载不了. 我想应该是项目上线的安全措施,但是我想调试项目.找到方法如下 在settings.py里面编辑 添加 STATICFILES_DIR ...

最新文章

  1. C++中的vector的用法
  2. javascript编写_如何通过编写自己的Web开发框架来提高JavaScript技能
  3. hdu 5512 Pagodas
  4. java List集合总结
  5. ALV列、行、单元格颜色设置
  6. INV标准报表+INVARAAS.rdf -- ABC分配报表
  7. 【跃迁之路】【522天】程序员高效学习方法论探索系列(实验阶段279-2018.07.12)...
  8. Qt文档阅读笔记-共享库的创建与调用
  9. 一文理解JDK静态代理、JDK动态代理、Cglib动态代理
  10. C语言中返回字符串函数的四种实现方法
  11. Redis的过期键删除策略和内存淘汰机制
  12. fzu 1675 The Seventy-seven Problem
  13. 1018. 锤子剪刀布 (20)-PAT乙级真题
  14. ant vue 树形菜单横向显示_丝滑般 Vue 拖拽排序树形表格组件Vue-DragTreeTable
  15. 《Effective Java 3rd》读书笔记——创建和销毁对象
  16. python画图-python绘图入门(完整版)
  17. numpy中的revel和flatten
  18. DIY微信朋友圈截图制作生成小程序源码下载
  19. FreeRTOS任务切换过程深层解析
  20. 最流行十大在线客服系统排行榜-市场常见客服系统软件排行-2023最新

热门文章

  1. mysql 5.7.17源码包_centos7 mysql5.7.17源码安装
  2. html的闪烁字,HTML最简单的文字闪烁代码
  3. RTP与RTCP协议介绍
  4. git 放弃本地修改,强制拉取更新
  5. 列出所有K个元素的子集-----2013年1月26日
  6. Teradata天睿公司推出适用各种部署环境的全球最强分析数据库
  7. 如何在Lua与C/C++之间实现table数据的交换
  8. OXY OPENCART 商城自适应主题模板 ABC-0020-05
  9. 基于ASA防火墙的SSL ×××配置
  10. TMG学习(十一),保护企业内网上网安全