Python爬蟲實戰之增長CSDN訪問量

初衷

1.增長本人csdn訪問量 2.看成一個Python的練手項目 3.想寫出更優質的博客技術文章,再也不爲了訪問量去寫文章。html

增長CSDN訪問量步驟

經過解析csdn博客首頁html 得到相應文章的a標籤連接,對其進行訪問python

Python代碼實現

# author:ytouch
# date:2019/07/27
# this py is used for brushing pageview for csdn

# 導入相關爬蟲庫和解析xml庫便可
import time
from pyquery import PyQuery as pq
import requests
from bs4 import BeautifulSoup

# 爬取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):
        main_response = requests.get(self.blogurl)
        # 判斷是否成功獲取 (根據狀態碼來判斷)
        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]
            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):
        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) #訪問該網站
                # 先判斷是否成功訪問
                if article_doc.status_code == 200:
                    print('成功訪問網站%s'%self.cur_article_url)
                    #進行解析
                    cur_page_html = article_doc.text
                    soup = BeautifulSoup(cur_page_html,'html.parser')
                    for link in soup.find_all('p',class_="content"):
                        requests.get(link.find('a')['href']) #進行訪問
                else:
                    print('訪問失敗')
        print('訪問結束')


#如何調用該類
mycsdn = ScrapyMyCSDN('Giser_D') #初始化類 參數爲博客名
cur_write_nums = mycsdn.getOriginalArticalNums() #獲得寫了多少篇文章
cur_blog_page = mycsdn.getScrapyPageNums(cur_write_nums) #cur_blog_page:返回須要爬取的頁數

for i in range(1,60):
    mycsdn.beginToScrapy(cur_blog_page)
    time.sleep(10) # 給它休息時間 仍是怕被封號的
複製代碼

如何使用這個類

使用方法比較簡單: 首先是初始化類 類參數是本身的博客名函數

mycsdn = ScrapyMyCSDN('Giser_D') #初始化類 參數爲博客名 其他參數不用改運行便可網站

python環境爲3.0版本及以上須要安裝相關庫this

pip install pyquery
pip install requests
pip install bs4
複製代碼

建議

要是引用本人的代碼 建議後面附上本人的連接,畢竟分享不易 感謝.url

write by ytouchspa

相關文章
相關標籤/搜索