因為找瑟瑟的資源,
找到MahoMangaDownloader無法處理的網(wǎng)站。
索性就自己寫一個爬蟲試試。
意外發(fā)現(xiàn)背後還滿單純的,除了操作介面之外,
主要邏輯,就只是連到對應(yīng)的網(wǎng)址,一張一張圖另存下來而已。
找頁數(shù)、書名
程式碼:
driver = webdriver.Chrome(service=s)
driver.get(gallery_url)
pages_text = driver.find_element(By.CLASS_NAME, 'pages').text
pages = pages_text[7:]
folder_name = driver.find_element(By.CLASS_NAME, 'subtitle').text
說明:
上篇也提過selenium核心的用法,
打開webdriver後,找到對應(yīng)物件,汲取關(guān)鍵的資料、數(shù)據(jù)。
創(chuàng)建資料夾
程式碼:
folder_check = os.path.exists(folder_name)
if not folder_check:
os.mkdir(folder_name)
說明:
唯一比前一次多做的事情:使用到OS,也就是資料夾、檔案操作相關(guān)的部分。
找網(wǎng)路資料夾路徑
程式碼:
first_page_url = view_url + '/1'
driver.get(first_page_url)
img_object = driver.find_element(By.ID, 'gimg')
fisrt_img_src = img_object.get_attribute("src")
img_file_src = fisrt_img_src[:-5]
for index in range(int(pages)): #pages is str
page = index + 1
filename = str(page) + '.jpg'
#page_url = view_url + '/' + page
#driver.get(page_url)
#img_object = driver.find_element(By.ID, 'gimg')
#img_src = img_object.get_attribute("src")
img_src = img_file_src + filename
...
說明:
因為這個網(wǎng)頁結(jié)構(gòu)比較簡單,把圖片都放在同一個資料夾,而且圖片也是用頁數(shù)來命名。
所以就先到第一頁,抓取那個資料夾的路徑,
之後用FOR迴圈修改頁數(shù),就可以得到全部圖片的路徑了
難關(guān):資料型別不符
這次唯一碰到的問題,也是常常在其他語言也會有的,
就是資料型別不會自動轉(zhuǎn)換。
在網(wǎng)頁抓到的頁數(shù)資料是text,直接丟到for迴圈條件的range就出錯了。
同樣地,在組成路徑時,頁數(shù)是number,因此+號無法處理兩邊不同型態(tài)的運(yùn)算。
解法:
在python轉(zhuǎn)型態(tài)很容易,直接丟到型態(tài)名稱的函式裡就搞定了!
圖片儲存
方法3: OS建檔
程式碼: (for 接續(xù))
...
r = requests.get(img_src)
save_path = os.path.join(folder_name, filename)
with open(save_path, 'wb') as outfile:
outfile.write(r.content)
說明:
繼前一次的兩個方法,這次就是直接開一個新檔案,然後把request抓來的資料丟進(jìn)去,
圖片就存好了。