亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

史詩級干貨-python爬蟲之增加CSDN訪問量

系統(tǒng) 1546 0

史詩級干貨-python爬蟲之增加CSDN訪問量

搜索微信公眾號:‘AI-ming3526’或者’計算機視覺這件小事’ 獲取更多算法、機器學(xué)習(xí)干貨
csdn:https://blog.csdn.net/baidu_31657889/
github:https://github.com/aimi-cn/AILearners

文章初衷:

  • 最近CSDN官方出了一個流量扶持計劃,針對原創(chuàng)文章進行百度推廣,我嘗試推了幾篇,效果也不是很好,或者是自己文章水平不夠,太水~就想著增加一下自己CSDN的訪問量
  • 想寫出更優(yōu)質(zhì)的博客技術(shù)文章,不再為了訪問量去寫文章。

本文參照CSDN一個大佬的文章:https://blog.csdn.net/Giser_D/article/details/97472274
加上了使用代理訪問,可以盡量防止被官方封號,更安全一些。

步驟:

在國內(nèi)髙匿代理IP網(wǎng)站:http://www.xicidaili.com/nn/ 取到ip。
通過解析csdn博客首頁html 獲得相應(yīng)文章的a標(biāo)簽鏈接,使用代理對其進行訪問。

Python代碼實現(xiàn):

          
            #!/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
'''

# 導(dǎo)入相關(guān)爬蟲庫和解析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 類似于構(gòu)造函數(shù) param[in]:blogname:博客名'''
        csdn_url = 'https://blog.csdn.net/' #常規(guī)csdnurl
        self.blogurl = csdn_url+blogname #拼接字符串成需要爬取的主頁url

    ''' Func:獲取寫了多少篇原創(chuàng)文章 '''
    ''' return:寫了多少篇原創(chuàng)文章'''
    def getOriginalArticalNums(self,proxies):
        main_response = requests.get(self.blogurl,proxies=proxies)
        # 判斷是否成功獲取 (根據(jù)狀態(tài)碼來判斷)
        if main_response.status_code == 200:
            print('獲取成功')
            self.main_html = main_response.text
            main_doc = pq(self.main_html)
            mainpage_str = main_doc.text() #頁面信息去除標(biāo)簽信息
            origin_position = mainpage_str.index('原創(chuàng)') #找到原創(chuàng)的位置
            end_position = mainpage_str.index('原創(chuàng)',origin_position+1) #最終的位置,即原創(chuàng)底下是數(shù)字多少篇博文
            self.blog_nums = ''
            # 獲取寫的博客數(shù)目
            for num in range(3,10):
                #判斷為空格 則跳出循環(huán)
                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))) #獲得當(dāng)前博客文章數(shù)量
            return cur_blog_nums #返回博文數(shù)量
        else:
            print('爬取失敗')
            return 0 #返回0 說明博文數(shù)為0或者爬取失敗

    ''' Func:分頁'''
    ''' param[in]:nums:博文數(shù) '''
    ''' return: 需要爬取的頁數(shù)'''
    def getScrapyPageNums(self,nums):
        self.blog_original_nums = nums
        if nums == 0:
            print('它沒寫文章,0頁啊!')
            return 0
        else:
            print('現(xiàn)在開始計算')
            cur_blog = nums/20 # 獲得精確的頁碼
            cur_read_page = int(nums/20) #保留整數(shù)
            # 進行比對
            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 #返回的數(shù)字
            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:需要爬取的頁數(shù)'''
    '''return:0:瀏覽量刷失敗'''
    def beginToScrapy(self,page_num,proxies):
        if page_num == 0:
            print('連原創(chuàng)博客都不寫 爬個鬼!')
            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) #訪問該網(wǎng)站
                # 先判斷是否成功訪問
                if article_doc.status_code == 200:
                    print('成功訪問網(wǎng)站%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('訪問結(jié)束')
 
# IP地址取自國內(nèi)髙匿代理IP網(wǎng)站: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標(biāo)簽中獲取td標(biāo)簽數(shù)據(jù)  
        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)  
        #如何調(diào)用該類 參數(shù)換成你的csdn名字就行
        mycsdn = ScrapyMyCSDN('baidu_31657889') #初始化類 參數(shù)為博客名
        cur_write_nums = mycsdn.getOriginalArticalNums(proxies) #得到寫了多少篇文章
        cur_blog_page = mycsdn.getScrapyPageNums(cur_write_nums) #cur_blog_page:返回需要爬取的頁數(shù)

        mycsdn.beginToScrapy(cur_blog_page,proxies)
        time.sleep(20) # 給它休息時間 還是怕被封號的
          
        

需要用到的pip包

我的python環(huán)境為3.6.5版本及以上需要安裝相關(guān)庫

          
            pip install pyquery
pip install requests
pip install bs4
pip install fake_useragent
pip install lxml
pip install ssl
          
        

使用方法

修改主函數(shù)第一行中range(1,3),這代表只取兩個隨機代理,然后讓我們的csdn所有原創(chuàng)文章瀏覽量加一遍,循環(huán)兩次,修改range后面的值就可以增加循環(huán)次數(shù)了。

mycsdn = ScrapyMyCSDN('baidu_31657889') #參數(shù)為博客名,參數(shù)換成你的csdn名字就行

后記

個人感覺提高博客質(zhì)量才是重點,但是我們可以找到比較好的機會來蹭個熱度,爬一下自己感覺非常不錯的文章。

當(dāng)然我們要記得適可而止,網(wǎng)上不乏有很多人的號被封的。別忘記我們寫博客的初衷是什么,對訪問量這個東西不用太在意了。

代碼下載地址:https://github.com/aimi-cn/AILearners/tree/master/src/py3.x/others/fm/19.08.26/csdn.py


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 免费两性的视频网站 | 国产色婷婷精品免费视频 | 精品在线免费视频 | 午夜在线播放免费高清观看 | 狠狠色丁香婷婷综合小时婷婷 | 手机看片日韩 | 久久免费在线观看 | 99久久99这里只有免费的精品 | 国产99视频精品免视看9 | 国产中文字幕久久 | 中文字幕综合 | 欧美色视频日本片高清在线观看 | 日本一级~片免费永久 | 精品精品国产自在香蕉网 | 性大交 | 四虎国产精品成人永久免费影视 | 日日噜噜夜夜狠狠tv视频免费 | 国产欧美一区二区三区观看 | 久久久窝窝午夜精品 | 欧美成年黄网站色高清视频 | 亚洲人成伊人成综合网久久久 | 国产香蕉在线 | 亚洲欧洲国产成人精品 | 特级无码a级毛片特黄 | 四虎4hu影库永久地址 | 99精品久久久久中文字幕 | 亚洲欧美高清 | 精品老司机在线观看视频 | 久草在在线视频 | 一级特黄aaa大片在线观看 | 四房婷婷在线视频播放 | 国产看色免费 | 亚洲欧美综合乱码精品成人网 | 99精品久久99久久久久久 | 日日干天天干 | 国产激情在线视频 | 久久夜视频| 婷婷五月色综合香五月 | jizz18性欧美大全 | 九九热视频这里只有精品 | 夜色福利一区二区三区 |