1. 程式人生 > >Python爬蟲實戰--CSDN部落格爬蟲(附贈瀏覽量小工具)

Python爬蟲實戰--CSDN部落格爬蟲(附贈瀏覽量小工具)

前言:
哈哈,繼續高興一下,通過自己的小手段,讓部落格訪問量過萬啦~怎麼做到的呢?
大家想一想我們近來所學的爬蟲知識,養兵千日用兵一時,在前面的學習,我們已經可以很輕鬆的爬去一些中小型和大型網站了,現在我們一起來思考一下,我們該怎麼去爬蟲CSDN網站,並順便提高一下我們部落格的瀏覽量呢?
問題分析:
我們主要的目標是爬去CSDN部落格,也順帶提升一下我們的瀏覽量,那我們應該爬去CSDN全站呢?還是隻需要爬去我們的個人部落格呢?
答案很顯然,在這裡我們只需要爬去我們的個人部落格,就可以達到相應的目的啦!
目標站點分析
目標URL:https://blog.csdn.net/m0_37903789(以我的個人主頁為例)


明確內容:提升瀏覽量
在這裡插入圖片描述
顯然,我們的訪問量是與我們部落格文章的瀏覽量相關聯的,我們只需要提升我們的部落格瀏覽量,訪問量也就隨之上漲了。
**Question:**怎麼提升部落格文章的瀏覽量呢?
知道答案的小童鞋,歡迎在下面寫出你們的方法~
好了,我們的目標清楚了,就該大刀闊斧的做事情啦!

 def parse_index(self, html):
        article_urls = []
        soup = BeautifulSoup(html, 'lxml')
        divs = soup.select("div.article-item-box")
        for div in divs[1:]:
            temp_read_num = div.select("div > p:nth-of-type(2) > span")[0].get_text()
            read_num = int(temp_read_num.split(":")[-1])
            if read_num <= READ_NUM:
                article_url = div.select("h4 > a")[0].attrs['href']
                print(article_url, "加入請求佇列", read_num)
                article_urls.append(article_url)
        print("本次總任務數:", TASK_NUM)
        while self.task_num <= TASK_NUM:
            # 任務編號
            print("Task ", self.task_num)
            # 更新代理
            self.proxy = self.get_proxy()
            # 更新User-Agent
            self.headers["User-Agent"] = self.ua.random
            # 設定非同步IO介面,並分配相應的任務
            loop = asyncio.get_event_loop()
            tasks = [self.request_page(article_url) for article_url in article_urls]
            loop.run_until_complete(asyncio.wait(tasks))
            self.task_num += 1
            print("Task {0} is completed! There are {1} tasks left".format(self.task_num, TASK_NUM-self.task_num))

在這裡,為了提高效率,採用非同步IO的方式。
程式碼優化:為提升效率,大家都還可有用什麼辦法呢?歡迎大家一起討論
原始碼地址:https://github.com/NO1117/csdn_browser
Python交流群:942913325 歡迎大家一起交流學習