python 爬蟲 計算部落格園瀏覽量,刷瀏覽量

來源:互聯網
上載者:User

標籤:app   compile   表達   imp   x64   內建函數   class   部落格   info   

首先進入部落格園的管理頁面:

通過觀察A-JAX請求,發現部落格的分類(categories)是一個json格式的資料即:

                                  

於是先爬取categories。通過各個分類的頁面進而爬去地址,瀏覽量,開啟一個category的頁面:

檢查網頁

   

這樣就得到了每個部落格的地址和瀏覽量了

上代碼,其他一些問題在代碼中給出注釋:

import timeimport requestsimport jsonimport refrom selenium import webdriverurl = ‘https://i.cnblogs.com/categories‘base_url = ‘https://i.cnblogs.com/posts?‘views = 0url_list = []headers = {    #在headers中添加上自己的cookie    ‘cookie‘: ‘你自己的cookie‘,‘user-agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36‘,    ‘upgrade-insecure-requests‘: ‘1‘}pattern1 = re.compile(‘<td>發布</td>.*?\d.*?(\d{1,})‘, re.S)        #Regex #這邊尤其要注意到瀏覽量有可能不只是一個位元,還可能是二位元三位元,所以寫正則的時候應該是(\d{1,})pattern2 = re.compile(‘<td class="post-title"><a href="(.*?)"‘, re.S)    #Regexresponse = requests.get(url=url, headers=headers)html = response.textdata = json.loads(html)            #通過json.loads把資料轉化成字典格式categories = (i[‘CategoryId‘] for i in data)for category in categories:    cate_url = base_url + ‘categoryid=‘ + str(category)  #build每個category的地址    headers[‘referer‘] = cate_url    response = requests.get(cate_url, headers=headers)    html = response.text    results1 = re.findall(pattern1, html)    #瀏覽量的findall結果    results2 = re.findall(pattern2, html)    #網頁地址的findall結果    if results1:        for result1 in results1:            views = views + int(result1)    #通過int()內建函數,把string格式的數字轉化為int格式的數值,計算瀏覽量         for result2 in results2:            url_list.append(‘https://‘ + result2)    #build地址print(‘總瀏覽量為:‘, views)print(url_list)options = webdriver.ChromeOptions()    #通過selenium 模組中的webdriver 類比一個chrome瀏覽器#設定中文options.add_argument(‘lang=zh_CN.UTF-8‘)#更換頭部options.add_argument(‘user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"‘)#https://www.cnblogs.com/francischeng/p/9437809.html#www.cnblogs.com/francischeng/p/9437809.com‘driver = webdriver.Chrome(chrome_options=options)while True:    for url in url_list:        driver.delete_all_cookies()        driver.get(url)        time.sleep(2)    #睡眠兩秒

總結。

1.主要遇到的錯誤是,Regex中爬取瀏覽量的問題,剛開始唯寫了(\d),也就是一個數字。然而瀏覽量可能是二位元三位元,所以應該改成(\d{1,})這樣可以爬取多位的數字。

2.通過單純的類比瀏覽器並不能刷瀏覽量,可能一個ip一天只能增加幾個瀏覽量

 

python 爬蟲 計算部落格園瀏覽量,刷瀏覽量

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.