作者laiDark (C)
看板Python
標題[問題] (已解決)爬蟲圖片遇到編碼問題(日文)
時間Sun Jul 29 12:14:51 2018
------ 目前已解決-----
有熱心的版友跟我站內信後
發現是網頁編碼的問題
站內給我修改過的code
是可以抓的,非常感謝這位版友
也謝謝底下各位的推文與建議 Q_Q
-----------------------
各位版上的前輩們好:
昨天晚上臨時想寫一個小爬蟲
抓一個日本網站上的圖片
作業環境:windows 8.1
python版本:3.7.0
我是直接用Notepad++ 寫
用windows console 下指令去執行
結果遇到有圖片是用日文命名
導致UnicodeEncodeError
錯誤訊息截圖:
https://imgur.com/Zw5wXnn
(這個截圖不知道有沒有用,沒用的話我再刪掉)
Code:
https://pastebin.com/681VVgzb
我只擷取抓圖片那邊的code
前面的code都只是過濾找出img的tag而已,應該是沒問題
然後用成 "
http://abc.jpg"丟到urlretrieve抓到我設定的資料夾
這個方法也是我在網路上找到的
主要是i['src'] 會有日文字出現 (日文命名的圖片檔)
下面那一行key
是我之前專題的組員時候,要用指令下關鍵字(中文)
丟到該網站搜尋,把搜尋的結果抓下來
當時發現網址會把關鍵字轉成%B2%R2%45類似這樣
我的組員使用urllib.parse.quote將中文轉成那樣併入url
我參考組員的code
因為我想要轉成%xx%bb這個樣子
丟到urlretrieve抓
但是先試印出來的結果不太對
圖片:
https://imgur.com/TT3VYAH
圖片網址在瀏覽器上直接是
http://xxx.com/日文4.jpg
我擷取後半日文.jpg 貼在記事本
比對用quote印出來 (console)
發現整個不一樣...
因為有試過用記事本的網址貼到瀏覽器,可以正確顯示那個圖片
但quote不一樣也無解
我在stackoverflow 也試著用關鍵字爬過
其中這一篇:
https://goo.gl/JYJrgW
提到windows的狀況
難道只能修改作業系統或是跳槽到linux嗎....
沒有只改code就能解決的辦法嗎
這個問題意想不到我弄了一個晚上到現在都還沒用好
還麻煩有類似經驗的大大幫忙了,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.238.66
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1532837695.A.65D.html
1F:推 eight0: 既然是 quot 的問題,你應該把 quot 相關的程式碼貼上來 07/29 15:59
e大,你說的quot 難道是指我用的quote << 不過這個我也只有用那一行
※ 編輯: laiDark (140.123.238.66), 07/29/2018 16:22:37
2F:→ coeric: 檔名是日文應該是沒問題 07/29 18:46
3F:→ coeric: 忘了我是Linux,windows我就不知道了..... 07/29 18:46
4F:→ coeric: 用utf-8應該是沒問題阿 07/29 18:47
5F:→ coeric: 應該是在cmd視窗下的關係 那是big5 07/29 18:51
c大,有版友建議我cmd改utf8~ 但結果還是一樣QQ
6F:推 TitanEric: 用Ubuntu on bash一切問題就解決 powershell一樣會有編 07/29 19:10
7F:→ TitanEric: 碼問題 07/29 19:10
※ 編輯: laiDark (140.123.238.66), 07/29/2018 19:21:46
8F:→ stucode: 應該跟 cmd 的 encoding 無關,更何況 3.6 過後 Windows 07/29 20:24
9F:→ stucode: 也預設是 UTF-8。 07/29 20:24
※ 編輯: laiDark (140.123.238.66), 07/29/2018 20:30:31
11F:→ coeric: cmd我倒是沒改過,但因為我曾經在windows遇過無解的 07/29 20:30
12F:→ coeric: 就試著強迫自己改Linux,似乎問題就直接解了 07/29 20:30
13F:→ coeric: code預設utf-8沒問題 但有時在print(show)時 會出事 07/29 20:31
c大,因為我是昨晚臨時想寫,就沒有另外裝linux ~
(python notepad++ 都是昨天才裝的XD)
只是這支程式是想要給其他朋友使用,才在windows底下寫
我也是第一次在windows下寫python,不然我之前都是用linux
只是那台linux電腦壞掉,現在也是用筆電先墊著....
※ 編輯: laiDark (140.123.238.66), 07/29/2018 20:37:22
14F:→ coeric: 我用Linux主機定期抓檔,很常遇到日文,都沒問題照樣存檔 07/29 20:32
15F:推 stucode: Windows 下的文字編碼問題有時候的確蠻麻煩的,經驗上 07/29 20:42
16F:→ stucode: 主要都在顯示方面,所以我後來幾乎都直接寫進 log 檔。 07/29 20:42
17F:→ coeric: 所以後來我把顯示(print)部份拿掉,大多是沒問題 07/29 23:44
18F:推 Yshuan: log到file +1 07/30 10:32