ETH官方钱包

前往
大廳
主題

[Python] 爬蟲程式練習(xí)3

Kmyth | 2023-11-05 16:13:17 | 巴幣 0 | 人氣 138

因為找瑟瑟的資源,
找到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)去,
圖片就存好了。

創(chuàng)作回應(yīng)

相關(guān)創(chuàng)作

更多創(chuàng)作