用Python爬取鬥破蒼穹漫畫。剛好我自己也練練手,
1 分析漫畫網站,http://www.manhuatai.com/
2 分析網頁發現,圖片的URL很有規則
3 https://mhpic.jumanhua.com/comic/D%2F鬥破蒼穹拆分版%2F689話V%2F1.jpg-mht.middle
【上面鏈接後面的2F689代表698話】【上面鏈接後面的2F1代表每一話的第幾章圖片】
4 接下來就簡單了,用for循環可以獲取到圖片並保存,
但是有個問題,我們不知道每一話的標題
比如 第689話 戰幻身(中)
好在所有的章節信息都在http://www.manhuatai.com/doupocangqiong/這個鏈接裏面,用正則把他們都提取出來。
先看下圖片
貼上全部代碼,
import requests
import re
import os
def baocun_img(zidian,book_name):
n = 0
for i, k in zidian.items():
path = r"C:\Users\MI\Desktop\python\鬥破蒼穹\{}".format(book_name[n])
os.makedirs(path)
for pn_pn in range(1, int(k)+1):
url = 'https://mhpic.cnmanhua.com/comic/D%2F%E6%96%97%E7%A0%B4%E8%8B%8D%E7%A9%B9%E6%8B%86%E5%88%86%E7%89%88%2F{}%E8%AF%9D%2F{}.jpg-mht.middle'.format(i,pn_pn)
re = requests.get(url)
with open(path+'\{}{}.jpg'.format(book_name[n], pn_pn),'wb') as f:
f.write(re.content)
f.close()
print(book_name[n],'已經完成')
n += 1
def book_url():
url = 'http://www.manhuatai.com/doupocangqiong/'
res = requests.get(url)
res.encoding = 'utf-8'
book_nam = re.findall('title="第\d+話\s\S+\(\S\)', str(res.text))#得到每一話的名字
book_ = re.findall('第\d+話\s\S+\(\S\)\(\d+P\)', str(res.text))
book_p =re.findall('\d+P', str(book_))
book_pn = re.findall('\d+', str(book_p))
book_name1 = re.sub(r'title="|\s|\(|\)', '', str(book_nam))
book_name = re.findall(r"'(.+?)'",book_name1)#將字符串轉化爲list
book_i = re.findall(r"\d+話", book_name1)
book_id =re.findall(r'\d+', str(book_i))
zidian = dict(zip(book_id,book_pn))
baocun_img(zidian,book_name)
book_url()