Python爬蟲實戰--CSDN部落格爬蟲(附贈瀏覽量小工具)
阿新 • • 發佈:2018-11-23
前言:
哈哈,繼續高興一下,通過自己的小手段,讓部落格訪問量過萬啦~怎麼做到的呢?
大家想一想我們近來所學的爬蟲知識,養兵千日用兵一時,在前面的學習,我們已經可以很輕鬆的爬去一些中小型和大型網站了,現在我們一起來思考一下,我們該怎麼去爬蟲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 歡迎大家一起交流學習