前往
大廳
主題

[Python] 爬蟲程式練習3

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

因為找瑟瑟的資源,
找到MahoMangaDownloader無法處理的網站。
索性就自己寫一個爬蟲試試。

意外發現背後還滿單純的,除了操作介面之外,
主要邏輯,就只是連到對應的網址,一張一張圖另存下來而已。

找頁數、書名

程式碼:
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後,找到對應物件,汲取關鍵的資料、數據。

創建資料夾

程式碼:
folder_check = os.path.exists(folder_name)
if not folder_check:
    os.mkdir(folder_name)
說明:
唯一比前一次多做的事情:使用到OS,也就是資料夾、檔案操作相關的部分。

找網路資料夾路徑

程式碼:
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
    ...
說明:
因為這個網頁結構比較簡單,把圖片都放在同一個資料夾,而且圖片也是用頁數來命名。
所以就先到第一頁,抓取那個資料夾的路徑,
之後用FOR迴圈修改頁數,就可以得到全部圖片的路徑了

難關:資料型別不符
這次唯一碰到的問題,也是常常在其他語言也會有的,
就是資料型別不會自動轉換。
在網頁抓到的頁數資料是text,直接丟到for迴圈條件的range就出錯了。
同樣地,在組成路徑時,頁數是number,因此+號無法處理兩邊不同型態的運算。
解法
在python轉型態很容易,直接丟到型態名稱的函式裡就搞定了!

圖片儲存

方法3: OS建檔
程式碼: (for 接續)
    ...
    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抓來的資料丟進去,
圖片就存好了。

創作回應

相關創作

更多創作