標籤:

python爬取【追新番】日劇資源

首先感謝追新番字幕組給廣大日劇迷提供了很多優質的資源。

本文章爬取資源的磁力鏈接,伸手黨看這裡追新番日劇資源匯總/Japanese Dramas (ZhuiXinFan),前一個鏈接是有道雲筆記,後一個是我的個人網站里的博文,後一個打開速度更快一些。markdown的文件3.25MB,載入會比較慢。在這裡的結果爬取時間是2017年11月11日。

伸手黨在文檔中搜索想要的資源,點擊對應的magnet鏈接,理論上可以喚醒迅雷之類的下載軟體。

如果有【追新番】字幕組的成員看到本文,覺得可能因為存在的bq問題,會對字幕組的發展產生不良影響,請私信我,我會刪除匯總的鏈接,本文只做python爬蟲的一些技術分享。

爬蟲思路與代碼

實際上使用的爬蟲代碼也沒有什麼技術含量,大體思路是發現作品是和id號相關聯,id號是連續的,於是通過id號不斷爬取作品的網頁,作品網頁中有分集下載的網頁鏈接,通過進入該鏈接爬取對應的電驢和磁力鏈接地址。

整體過程中還是比較順利的,因為都是靜態網頁,獲取網頁內容然後使用正則表達式匹配,磁力鏈接需要再進入一個網頁獲取信息,最後將所有的內容寫入文件。遇到的坑就是日劇的名稱中存在一些字元不能使用GBK或者gb2312進行編碼,需要先行替換。

最終爬取的內容寫入一個markdown文件,代碼可以獲取電驢下載鏈接和磁力鏈接,因為發現磁力鏈接點擊可以喚醒utorrent下載,所以猜測迅雷應該也是可以的,這樣就在一個頁面里解決了下載所有資源的問題。否則,在追新番的網站上每一部電視劇的每一集都需要單獨打開一個頁面,比較麻煩。

以下是對應的代碼:

# coding=utf-8import reimport requestsimport urllibimport osfrom bs4 import BeautifulSoup def get_download_link(url): dl = requests.get(url) dl_data = dl.text soup = BeautifulSoup(dl_data,lxml) url_data = str(soup.findAll(name=dd)).split(>) # emule_url = url_data[1].split(<)[0] torrent_url = url_data[3].split(<)[0] # download_link = [ed2k]( + emule_url + ) [magnet]( + torrent_url + ) download_link = [magnet]( + torrent_url + ) return download_linkwith open(drama.md, a+) as f: f.write([TOC]
)for ii in range(1000): skipnum = 0 if ii < skipnum: continue r = requests.get(http://www.zhuixinfan.com/viewtvplay-+str(ii)+.html) data = r.text print ii dramaname = re.findall(r"<span id="pdtname">.+?</span>" ,data) if dramaname == []: continue dramaname = dramaname[0][19:-7] dramaname = dramaname.replace(uu301c,~) dramaname = dramaname.replace(uu30fb,-) print dramaname.encode(GBK) drama_name = ## +dramaname+
with open(drama.md, a+) as f: f.write(drama_name.encode(GBK)) name =re.findall(r"<td class="td2".+?</a>" ,data) l = len(name) for i in range(l): info = name[i].split(<)[2].split(>) link_num = info[0].split(")[1].split(=)[2] link = http://www.zhuixinfan.com/main.php?mod=viewresource&sid=+link_num filename = info[1].split( )[0] download_link = get_download_link(link) str0 = [ + filename + ]( + link + ) + download_link +
with open(drama.md, a+) as f: f.write(str0.encode(GBK))

Future work

以後有時間,打算整合豆瓣上對應電視劇的評分,再弄一個檢索匹配的功能,最完美的形式是在微信的公眾號里,發送對應劇的名稱,可以返回結果,這樣方便使用一些下載工具快速實現批量下載的功能。

當然其他字幕組的資源的地址什麼的,有時間也會嘗試用爬蟲獲取。

看心情吧(逃

推薦閱讀:

python爬蟲如何斷點繼續抓取?
在寫Python的時候,你最喜歡用哪一款IDE?
Python: 你不知道的 super
Python入門 函數 提高篇
Python如何輸出包含在對象中的中文字元?

TAG:日劇 | Python |