[問題] 網頁中部份中文字元影響爬蟲
大家好,我是Python自學者,雖然習慣自己上網找答案,
但很多基本觀念可能沒有學到或學好,
所以現下出了一個我不知如何在網路上找答案的問題
我在爬某政府網頁時,發現若網頁中包含某些中文字元,如
https://ctext.org/dictionary.pl?if=gb&char=%E3%95%A1
https://ctext.org/dictionary.pl?if=gb&char=%F0%A4%A5%82
Python就會無法讀取該字元之後的網頁原始碼,
以致在該字元前的元素可正常定位,但該字元後的元素用xpath都定位不到
該網頁有寫charset=big5,所以我試著先把網頁原始碼重新編碼,如:
str.decode('bi5').encode('utf8')
但就會出現編碼失敗
而這些奇怪字元在Chrome上可正常顯示,在Edge上會變缺字,這兩個字也無法貼上批踢踢
若用Excel查,第一個字在Excel上用code查是64386,第二個字的code是63(相當於缺字)
想請問這些奇怪的字元是因為原本就不在unicode或big5字元集裡頭嗎?
因為某政府網頁中有這兩個怪字的數量不低,我無法以個案處理,
不知道是否有什麼辦法可以正常處理,感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.117.188
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1548928865.A.0C1.html
推
01/31 18:4, , 1F
01/31 18:4, 1F
謝謝,我再試看看
[更新]謝謝,用這個編碼成功了XD
推
01/31 19:30,
6年前
, 2F
01/31 19:30, 2F
因為這個網頁一開始會有隨機驗證碼,後續還有一些反爬機制,
我暫時還不想在舊課題未完前面對一堆新課題,所以把我需要的網頁先存在本機端,
https://1drv.ms/u/s!AuQERVaW1DVCgv4lwTnpEymSIN0ORQ
例如以上這個檔就有怪字(big5編碼,需下載,直接用OneDrive會以unicode開出亂碼)
程式碼如下:
from lxml import etree,html
with open('147.htm','rb') as f:
page = f.read()
tree = html.fromstring(page)
# 怪字前元素,可定位
建照碼 = tree.xpath('//td[contains(text(),"(105)")]')[0].text
# 怪字後元素,無法定位
地號 = tree.xpath('//td[contains(text(),"基地概要")]')[0].text
print(+建照碼+' '+地號)
推
01/31 20:22,
6年前
, 3F
01/31 20:22, 3F
謝謝,這個好像有點深,我再慢慢研究XD
※ 編輯: liquidbox (59.115.117.188), 01/31/2019 21:09:58
推
01/31 21:05,
6年前
, 4F
01/31 21:05, 4F
推
01/31 21:07,
6年前
, 5F
01/31 21:07, 5F
※ 編輯: liquidbox (59.115.117.188), 01/31/2019 21:14:15
→
01/31 23:24,
6年前
, 6F
01/31 23:24, 6F
→
01/31 23:24,
6年前
, 7F
01/31 23:24, 7F
推
02/01 17:22,
6年前
, 8F
02/01 17:22, 8F
推
02/01 17:36,
6年前
, 9F
02/01 17:36, 9F
→
02/01 17:36,
6年前
, 10F
02/01 17:36, 10F
→
02/01 17:37,
6年前
, 11F
02/01 17:37, 11F
我是直接對著連結右鍵另存新檔,把一個個的.htm抓下來,
過程中似乎沒有可以調整編碼的機會,但仔細想想,您說的有道理,
因為我在抓下數百個檔案時確實發現一直遇到編碼問題
絕大部份似乎可以用big5-hkscs解決,但少數無法的就直接用人工了XD
※ 編輯: liquidbox (36.227.169.167), 02/03/2019 10:27:04
推
02/04 12:59,
6年前
, 12F
02/04 12:59, 12F
→
02/04 12:59,
6年前
, 13F
02/04 12:59, 13F
Python 近期熱門文章
PTT數位生活區 即時熱門文章