本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。
作者:merlin&
需要用到的第三方模塊:requests , lxml , selenium , time , bs4,os
首先我們打開騰訊動漫首頁,分析要抓取的目標漫畫。找到騰訊動漫的漫畫目錄頁,簡單看了一下目錄,發現全站的漫畫數量超過了三千部(感覺就是爬下來也會把內存撐爆)
于是我覺得爬取首頁的推薦漫畫會是一個比較好的選擇(爬取全站漫畫只需要稍稍改一下網址構造就可以做到了)
選定了對象之后,就應該想辦法來搞到漫畫的地址了右擊檢查元素,粗略看一遍網頁的源代碼,這時我發現里面有很多連續的
標簽,我猜測每部漫畫的地址信息就存儲在這些標簽里面
隨便打開一個《li》標簽,點擊里面包裹的鏈接地址會跳轉到一個新的網頁,這個網頁正是我想要找的漫畫地址,可以見得我的猜測是正確的,等到實際操作的時候再用表達式提取信息就非常容易了
進入漫畫的目錄頁,發現一頁最多可以展示20章的漫畫目錄,要想更換顯示還需要點擊章節名上面的選項卡來顯示其他章節的地址
接下來就需要我們來檢查網頁元素想辦法來獲取章節地址了,同樣右擊檢查元素在看到了源代碼后,我發現了一個非常驚喜的事情,這個源碼里面包含著所有的章節鏈接,而不是通過動態加載來展示的,這就省去了我們提取其他章節鏈接的功夫,只需要花心思提取漫畫圖片就可以了
這里每個《p》標簽下包含了五個《a》標簽,每個《li》標簽下包含了四個《p》標簽,而每個漫畫的鏈接就存在每個《a》標簽中,可以輕松通過語法來提取到每頁的鏈接信息
怎么將漫畫的圖片地址提取出來并保存到本地,這是這個代碼的難點和核心先是打開漫畫,這個漫畫頁應該是被加上了某些措施,所以它沒辦法使用右鍵查看網頁源代碼,但是使用快捷鍵[ctrl + shift +i]是可以看到的
按下[ctrl + shift + i],檢查元素
通過第一次檢查,可以發現網頁的元素中只有前幾張圖片的地址信息,后面的信息都為后綴.gif的文件表示,這些gif文件就是圖片的加載動畫
接著向下滑動到底部,等待圖片全部顯示出來再次檢查元素
現在所有的漫畫圖片全部顯示出來,下方并無.gif 的文件,由此可知,騰訊動漫是以js異步加載來顯示圖片的,要想獲取頁面的全部圖片,就必須要滑動滾動條,將全部的圖片加載完成再進行提取,這里我選擇selenium模塊和chromedriver來幫助我完成這些操作。下面開始進行代碼的編寫。
import requests
from lxml import etree
from selenium import webdriver #selenium模擬操作
from time import sleep
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.options import Options #谷歌無頭瀏覽器
import os
這里我使用的是xpath提取漫畫地址信息,在谷歌瀏覽器中使用xpath helper插件輔助編寫xpath表達式
#打開騰訊動漫首頁
url='https://ac.qq.com/'
#給網頁發送請求
data=requests.get(url).text
#將網頁信息轉換成xpath可識別的類型
html=etree.HTML(data)
#提取到每個漫畫的目錄頁地址
comic_list=html.xpath('//a[@class="in-rank-name"]/@href')
print(comic_list)
print一下輸出的comic_list,提取成功
內容頁的提取也很簡單,就像上面的分析一樣,使用簡單的xpath語法即可提取
然后我們再將漫畫的名字提取出來,方便為保存的文件夾命名
#遍歷提取到的信息
for comic in comic_list:
#拼接成為漫畫目錄頁的網址
comic_url=url + str(comic)
#從漫畫目錄頁提取信息
url_data=requests.get(comic_url).text
#準備用xpath語法提取信息
data_comic=etree.HTML(url_data)
#提取漫畫名--text()為提取文本內容
name_comic=data_comic.xpath("//h2[@class='works-intro-title ui-left']/strong/text()")
#提取該漫畫每一頁的地址
item_list=data_comic.xpath("//span[@class='works-chapter-item']/a/@href")
print(name_comic)
print(item_list)
print打印的信息:
剛剛我們輸出的是漫畫頁的地址字段,但是通過這些字段并不能請求到信息,還需在前面加上域名才可以構成一個完整的網址提取章節名是為了在漫畫名的文件夾下再為每個章節創建一個文件夾保存漫畫圖片
for item in item_list:
#拼接每一章節的地址
item_url=url + str(item)
#print(item_url)
#請求每一章節的信息
page_mes=requests.get(item_url).text
#準備使用xpath提取內容
page_ming=etree.HTML(page_mes)
#提取章節名
page_name=page_ming.xpath('//span[@class="title-comicHeading"]/text()')
print(page_name)
打印章節名:
這個部分的代碼是這個代碼的核心部分,也是花費時間最久的部分首先我們知道通過正常的方式沒有辦法請求到所有的圖片地址信息,若是使用抓包方法會變得非常難分析,所以我采用的是模擬瀏覽器滑動的方法來獲得圖片的地址信息為了方便看到結果,先將webdriver設置為有界面模式,等到實現想要的功能之后,再將它隱藏起來
#webdriver位置
path=r'/home/jmhao/chromedriver'
#瀏覽器參數設置
browser=webdriver.Chrome(executable_path=path)
#開始請求第一個章節的網址
browser.get(item_url)
#設置延時,為后續做緩沖
sleep(2)
#嘗試執行下列代碼
try:
#設置自動下滑滾動條操作
for i in range(1, 100):
#滑動距離設置
js='var q=document.getElementById("mainView").scrollTop=' + str(i * 1000)
#執行滑動選項
browser.execute_script(js)
#延時,使圖片充分加載
sleep(2)
sleep(2)
#將打開的界面截圖保存,證明無界面瀏覽器確實打開了網頁
browser.get_screenshot_as_file(str(page_name) + ".png")
#獲取當前頁面源碼
data=browser.page_source
#在當前文件夾下創建html文件,并將網頁源碼寫入
fh=open("dongman.html", "w", encoding="utf-8")
#寫入操作
fh.write(data)
#關掉瀏覽器
fh.close()
# 若上述代碼執行報錯(大概率是由于付費漫畫),則執行此部分代碼
except Exception as err:
#跳過錯誤代碼
pass
運行之后會自動打開漫畫的內容頁,并拖動右側的滑動條(模擬了手動操作,緩慢拖動是為了讓圖片充分加載),其中的sleep方法和網速有一定的關系,網速好的可以適當減少延時的時間,網速差可適當延長在寫拖動滑動條的代碼時,我嘗試了非常多種拖動寫法,也模擬了按下方向鍵的操作,可是只有這一種方法使用成功了。我認為失敗的原因可能是剛打開界面的時候會有一個導航條擋住滑塊,導致無法定位到滑塊的坐標(因為我用其他網頁測試的時候都是可以拖動的)
使用的try是為了防止有一些章節會彈出付費窗口,導致程序報錯,使后續無法運行,即遇到會報錯的情況就跳過此段代碼,執行except中的選項
這段程序運行完之后有一個dongman.html文件保存在當前文件夾下,里面就包含了所有圖片的url,接下來只要讀取這個文件的內容就可以提取到所有的漫畫地址了
當我們保存完網頁的源代碼之后,接下來的操作就變得簡單了 我們要做的就是提取文件內容,將圖片下載到本地
#用beautifulsoup打開本地文件
html_new=BeautifulSoup(open('dongman.html', encoding='utf-8'), features='html.parser')
#提取html文件中的主體部分
soup=html_new.find(id="mainView")
#設置變量i,方便為保存的圖片命名
i=0
#提取出主體部分中的img標簽(因為圖片地址保存在img標簽中)
for items in soup.find_all("img"):
#提取圖片地址信息
item=items.get("src")
#請求圖片地址
comic_pic=requests.get(item).content
#print(comic_pic)
#嘗試提取圖片,若發生錯誤則跳過
try:
#打開文件夾,將圖片存入
with open('comic/' + str(name_comic) + '/' + str(page_name) + '/' + str(i + 1) + '.jpg', 'wb') as f:
#print('正在下載第 ', (i + 1), ' 張圖片中')
print('正在下載' , str(name_comic) , '-' , str(page_name) , '- 第' , (i+1) , '張圖片')
#寫入操作
f.write(comic_pic)
#更改圖片名,防止新下載的圖片覆蓋原圖片
i +=1
#若上述代碼執行報錯,則執行此部分代碼
except Exception as err:
#跳過錯誤代碼
pass
到了這里代碼就寫完了,來看一下運行結果:
打開文件夾看到:
今年的5月1日起,國內全網的《海賊王》漫畫都進入了收費模式。雖然大部分的觀眾都很支持正版收費,不過版權方會不會因為《海賊王》的人氣而獅子大開口也是很多觀眾擔心的話題,而接下來,小編就給大家對比一下國內《海賊王》漫畫和其他地區的收費對比。
在國內,《海賊王》漫畫的正版代理有兩家,分別是騰訊漫畫和B站。其中,騰訊漫畫每一話的價格是49點券,折合人民幣是0.49元(非活動價格),而B站《海賊王》漫畫的價格是49漫幣,同樣是0.49元(非活動價格)。
然后我們來看看《海賊王》官網上的價格,在官網上,想閱讀一話《海賊王》漫畫需要花費30日元,折合成人民幣是1.98元。并且,官網上購買的《海賊王》漫畫是有閱讀期限限制的,時間是2天。
接下來我們再來看看《少年JUMP周刊》的電子版,電子版《少年JUMP》每期的價格是290日元,換算成人民幣是19.15元。由于每本《少年JUMP》上面都有多部漫畫連載,所以這個具體價格還是要看你追多少部漫畫,如果你追十部,那么每一部一話的價格是1.9元。
當然,《少年JUMP》電子版也有包月的模式,包月的價格是980日元一個月,換成人民幣就是64.7元,按照每個月有4期來算,每期的價格是16.1元,比不包月便宜了3塊錢。如果你同樣是追里面的十部漫畫,那么每部漫畫每一話是1.61元。
緊接著,我們再來看看《海賊王》集英社單行本的價格(實體書和電子版價格一樣),集英社的單行本是每卷460日元,折合人民幣30.3元。而每卷單行本一般有9-11話,我們按11話來算,也就是每一話大約2.75元。
說完了日本地區的價格,我們再來看看臺灣省的價格。臺灣東立出版的單行本(實體書)價格是105新臺幣,換成人民幣大概24.8元。然后我們依舊按照每一卷單行本有11話來算,每一話的價格大約是2.25元。
另外,東立出版的單行本也有電子版,不過它的電子版價格會比實體書便宜一點,每卷是55新臺幣,換成人民幣大概13元。按照每一卷有11話來算,東立的單行本電子版每一話也需要1.18元。
這么看下來,國內《海賊王》漫畫每一話0.49元的價格已經是最低的了,看來這次騰訊真的良心發現了。最后,對于國內《海賊王》漫畫的收費標準,你有什么看法呢?你會掏錢去看嗎?歡迎在下方評論區留言。
│ 骨朵國漫
與音樂付費、視頻付費相同,漫畫付費的方式對年輕用戶來說是很容易接受的一件事。今天骨朵國漫(ID:guduoguoman)將對小明太極、快看漫畫、騰訊動漫這三家漫畫平臺付費內容和免費內容的相關數據展開分析。
小明太極付費與免費作品表現
從《小明太極付費收費作品收藏數top30》的榜單中,我們發現該平臺平均每部作品付費集數占總集數的百分比是82.2%。然而當我們分析該榜單的具體名單后發現,小明太極平臺收費作品大多數為男性向作品。以前10名為例,均為男性向漫畫作品。
如《斗破蒼穹》《斗羅大陸》《絕世唐門》《斗羅大陸3龍王傳說》《武動乾坤》等作品,都是男性向大IP網文改編漫畫,這些頭部IP漫畫在小明太極平臺的收費效果非常好。
在《小明太極付費作品收藏數top30獨家/非獨家作品對比》的圖表當中,獨家作品數量為5部,非獨家作品數為25部。
從《小明太極免費作品收藏數top30》的榜單中,我們發現該榜單top10作品中男性向作品和女性向作品占比較為平均。
其中,《X龍時代》《蒼穹榜之圣靈紀》《逆天邪神》《雪鷹領主》等為男性向作品;而《王牌校草》《暗夜新娘》《哦,我的寵妃大人》《傾國妖寵》等為女性向作品。
從《小明太極免費作品收藏數top30獨家/非獨家作品對比》的圖表當中,獨家作品數量為11部,非獨家作品數為19部。
從《小明太極作品收藏數top50》的榜單當中,我們發現小明太級漫畫平臺等大部分頭部作品都需要付費,甚至到榜單的前14名作品全部為付費內容。
從《小明太極作品收藏數top50 》當中,付費作品數量有48部,免費作品數僅有2部。
從《小明太極作品收藏數top50 獨家/非獨家作品對比》的圖表當中,獨家作品數量有6部,非獨家作品數為44部。
、
看漫畫付費與免費作品表現
從《快看漫畫付費收費作品收藏數top30》的榜單中,我們發現該平臺平均每部作品付費集數占總集數的百分比是64.3%。分析該榜單的具體名單后我們發現,前十作品中大多數為女性向作品,如第一名《你的血很甜》等。
值得一提的是第二名《魔道祖師》,僅有4%的付費集數與總集數的百分比。而該作品在快看漫畫本平臺的銷量榜為第四名,作為全網收費章節最少的作品,該漫畫的追新用戶最高。
從《快看漫畫付費作品收藏數top30獨家/非獨家作品對比》的圖表當中,獨家作品數量為20部,非獨家作品數為10部。
從《快看漫畫免費作品收藏數top30》的榜單中,我們發現該榜單top10的作品當中,大部分為該獨家平臺頭部IP,如《怦然心動》《甜美的咬痕》《朝花惜時》等。由此可見,快看漫畫作品轉付費收費的上升空間更高。
從《快看漫畫免費作品收藏數top30獨家/非獨家作品對比》的圖表當中,獨家作品數量為26部,非獨家作品數為4部。
其中,這26部獨家作品大部分為快看漫畫頭部IP,這也從側面說明該目前的戰略布局以吸引流量為主。
從《快看漫畫作品收藏數top50》的榜單當中,我們發現快看漫畫大部分頭部作品并未免費付費內容,甚至到榜單的前10部作品全部為免費付費內容。
而前20名作品中僅有《你的血很甜》和《魔道祖師》兩部作品為付費作品。而這兩部作品在本榜單的排名為第13、14名,卻是付費榜的冠軍和亞軍。
從《快看漫畫作品收藏數top50 付費/免費作品對比》的圖表當中,付費作品數量僅有6部,免費作品數為44部。
從《快看漫畫作品收藏數top50獨家/非獨家作品對比》的圖表當中,獨家作品數量為42部,非獨家作品數為8部。
訊動漫付費與免費作品表現
從《騰訊動漫付費作品收藏數top30》的榜單中,我們發現該平臺付費集數的平均百分比是50.7%。
分析該榜單的具體名單后我們發現,該平臺前10名的作品當中,除《綁架明星做男票》外均為該平臺老IP。
從《騰訊動漫付費作品收藏數top30獨家/非獨家作品對比》的圖表當中,獨家作品數量為23部,非獨家作品數為7部。
從《騰訊動漫免費作品收藏數top30》的榜單中,我們發現該榜單top10男性向作品和女性向作品的數量占比所差不多。
其中包括以《中國驚奇先生》《尸兄》(我叫白小飛)等獨家男性向作品,以及《王爺不要啊》等獨家女性向作品。
從騰訊視頻將《中國驚奇先生》《尸兄》(我叫白小飛)兩部頭部作品作為免費付費作品來看,該平臺當前的戰略布局還處于吸引用戶、拉攏流量的階段。
從《騰訊動漫免費作品收藏數top30獨家/非獨家作品對比》的圖表當中,獨家作品數量為25部,非獨家作品數為5部。
從《騰訊動漫作品收藏數top50》的榜單當中,我們發現騰訊動漫付費作品數量占比達到了74%,免費作品數量占比為26%。
值得注意的是,本榜單前五名與付費榜的排名相同。
從《騰訊動漫作品收藏數top50 付費/免費作品對比》的圖表當中,付費作品數量僅有37部,免費作品數為13部。
從《騰訊動漫作品收藏數top50 獨家/非獨家作品對比》的圖表當中,獨家作品數量有37部,非獨家作品數為13部。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。