用Python網路爬蟲獲取Mikan動漫資源

千鋒Python唐小強發表於2020-08-26

【一、專案背景】

[蜜柑計劃 - Mikan Project] :新一代的動漫下載站。是一個專門為喜歡動漫的小夥伴們打造的動漫影片線上播放網站,為大家第一時間分享最新動漫資源,每日精選最優質的動漫推薦。

用Python網路爬蟲獲取Mikan動漫資源

【二、專案目標】

實現獲取動漫種子連結,並下載儲存在文件。

【三、涉及的庫和網站】

1、網址如下:


https:
//mikanani.me/Home/Classic/{}

2、涉及的庫:**reques****ts、****lxml、** fake_useragent

3、軟體**:PyCharm**

【四、專案分析】

首先需要解決如何對下一頁的網址進行請求的問題。可以點選下一頁的按鈕,觀察到網站的變化分別如下所示:


https:/
/mikanani.me/Home/Classic/
1


https:/ /mikanani.me/Home/Classic/ 2

https:/ /mikanani.me/Home/Classic/ 3

點選下一頁時,每增加一頁Classic/()自增加1,用{}代替變換的變數,再用for迴圈遍歷這網址,實現多個網址請求。

【五、反爬措施】

1、獲取正常的 http請求頭,並在requests請求時設定這些常規的http請求頭。

2、使用 fake_useragent ,產生隨機的UserAgent進行訪問。

【六、專案實施】

1、我們定義一個class類繼承object,然後定義init方法繼承self,再定義一個主函式main繼承self。匯入需要的庫和網址。


import requests

from lxml import etree
from fake_useragent import UserAgent

class  Mikan(object):
    def __init__ (self):
     self.url = "{}"

    def main (self):
       pass

if __name__ == '__main__':
   Siper = Mikan()
   Siper.main()

2、主方法(main):for迴圈實現多個網頁請求。

stat = int(
input(
"start :"))

end = int( input( " end:"))
for page in range(stat, end + 1):
   url = self.url. format(page)
    print(url)

3、 隨機產生UserAgent。



for i 
in 
range(

1, 
50):

           self.headers = {
                'User-Agent': ua.random,
           }

4、傳送請求 獲取響應, 頁面回撥,方便下次請求。



def 
get_page
(
self, url):

   res = requests.get(url=url, headers= self.headers)
   html = res.content.decode( "utf-8")
    return html

5、xpath解析一級頁面資料,for迴圈遍歷補全網址,獲取二級頁面網址。


parse_html = etree.HTML(html)

one = parse_html.xpath( '//tbody//tr//td[3]/a/@href')
for li in one:
   yr = " + li

6、二級頁面請求 ,先找到頁面父節點,for迴圈遍歷,再用path獲取到種子的下載地址。補全種子連結地址。


tow = parse_html2.xpath(
'//body')

for i in tow:
   four = i.xpath( './/p[ @class="episode-title"]//text()')[ 0].strip()
   fif = i.xpath( './/div[ @class="leftbar-nav"]/a[1]/ @href')[ 0].strip()
    # print(four)
   t = " + fif
   print(t)

7、儲存在word文件 。

 dirname = 
"./種子/" + four[:
15] + four[
-20:] + 
'.torrent'

 # print(dirname)
 html3 = requests.get(url=t, headers=self.headers).content
 with open(dirname, 'wb') as f:
     f. write(html3)
      print( "\n%s下載成功" % four)

8、呼叫方法,實現功能。

 html = 
self.get_page(url)

self.parse_page(html)

【七、效果展示】

1、執行程式,在控制檯輸入起始頁,終止頁,如下圖所示。

用Python網路爬蟲獲取Mikan動漫資源

2、將下載成功的圖片資訊顯示在控制檯,如下圖所示。

用Python網路爬蟲獲取Mikan動漫資源

3、儲存.torrent文件。

用Python網路爬蟲獲取Mikan動漫資源

4、如何開啟種子檔案?先上傳到百度雲盤,如下圖所示。

用Python網路爬蟲獲取Mikan動漫資源

5、雙擊解析下載,如下圖所示。

用Python網路爬蟲獲取Mikan動漫資源

【八、總結】

1、不建議抓取太多資料,容易對伺服器造成負載,淺嘗輒止即可。

2、本文章就python爬取Mikan Project,在下載種子的難點和重點,以及如何防止反爬,做出了相對於的解決方案。

3、介紹瞭如何去拼接字串,以及列表如何進行型別的轉換。

4、歡迎大家積極嘗試,有時候看到別人實現起來很簡單,但是到自己動手實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2714757/,如需轉載,請註明出處,否則將追究法律責任。

相關文章