Python 增加部落格園閱讀量

  • 2020 年 1 月 26 日
  • 筆記

一、原理

  一般來說,閱讀量是通過 ip 識別的,如果一個 ip 已經請求過了,下一次就不再增加閱讀量。因此,想要增加閱讀量,就需要不同的 ip 進行請求。大致清楚了之後,就可以開始寫程式碼了。

二、獲取代理 ip

  中國有很多代理 ip 的網站,這裡我就推薦 http://31f.cn/http-proxy/ ,我們直接通過爬蟲對 ip 和埠號進行獲取,用 requests 和 BeautifulSoup ,由於這個網站的結構比較簡單,就直接上程式碼了(記得導包)。

def getIPList(url="http://31f.cn/http-proxy/"):      proxies = []      headers = {          'User_Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',      }        res = requests.get(url, headers=headers)        soup = BeautifulSoup(res.text, 'lxml')        ip_list = soup.select("body > div > table.table.table-striped > tr > td:nth-of-type(2)")      port_list = soup.select("body > div > table.table.table-striped > tr > td:nth-of-type(3)")        for i in range(len(port_list)):          proxies.append(ip_list[i].text + ":" + port_list[i].text)        return proxies

  如果想要獲取更多的 ip 可以讓這個方法不帶參數,直接通過循環對多個頁面進行抓取,畢竟大部分代理 ip 的有效期都很短。

三、發出請求

  其實在一開始,我是直接對 https://www.cnblogs.com/lyuzt/p/10381107.html 進行請求的,但是我發現用 requests 請求這個網址並不能增加閱讀量。因為其他的文件並沒有像平時打開網站那樣載入,而且增加閱讀量應該是由另外的網址進行,所以要好好分析一下,到底是通過什麼增加閱讀量的。

   從控制台可以看到有一個 put 請求的,域名的開頭為 count,這個才是閱讀量增加的關鍵。所以改一下 url 再請求。

  程式碼如下:

IPs = getIPList_2()  #print(IPs)  for i in range(len(IPs)):      print("開始請求")      user_agent = random.choice(user_agents)      proxy = IPs[i]      res = requests.get(blog_url, headers={'user_agent': user_agent}, proxies={'http': proxy})      print(user_agent + 't' + proxy, end='t')      print(res)      print("請求結束,準備下一次請求......")      time.sleep(10)

  ps:" user_agents " 這個變數是一個列表,相當於一個 user_agent 池,它的每個元素都是一個 user_agent 。這個就不展示了,可以上網複製。

四、總結

  經過測試,部落格的閱讀量有所增加,但由於大部分代理 ip 的有效期短,基本上只能增加一點點。有些網站可以通過直接請求網址增加閱讀量,有一些網站則是通過請求其他的文件增加的,如果覺得去分析有點麻煩可以直接用 selenium 讓瀏覽器自動請求,至於這個方法就不嘗試了。

  雖然閱讀量少,但我只試了一次,畢竟不能被這個數字左右,要端正心態。只要有技術,這些東西真的無所謂(不帶出處轉載這個就不能忍了,畢竟侵權了)。最後強調一下,這篇部落格重在交流!