我正在使用下面顯示的過程來編寫(從網絡上搜索)人員數據列表。 我認爲代碼本身沒問題,但我對結果感到困惑。有些字符解碼正確,有些則不正確。例如:如何修復錯誤的解碼?
STANIS?AWurodzony/a 01.01.1888, ?Ԅ?
HALINAurodzony/a 05.07.1927, ŁÓDŹ
兩個字符串中的最後一個字是相同的! 另外?通過符號來代替不可翻譯字符一旦使用一次沒有:
STANISŁAWurodzony/a 24.03.1907, RAKSZANY
^
| here is written ok - not replaced
這裏是代碼:
def findPerson():
file = codecs.open('Names.txt','a','ISO-8859-1','replace')
try:
with codecs.open('./listNames_links.txt','r','ISO-8859-1','replace') as f:
line = f.readline()
while line != '':
#print line,
line = f.readline()
res = requests.get('http://real.address.gov.pl'+line)
res.raise_for_status()
soup = BeautifulSoup(res.text)
linkElems = soup.find('a','css_class_name').text
file.write(linkElems)
file.write('\r\n')#preserve end-of-line
問題: 如何解決這個問題。我的程序錯了嗎?或者源頁面破壞了編碼? (我認爲沒關係,我可以在瀏覽器中閱讀它,沒有任何錯誤。)
我知道,這是正確的解決方案,我嘗試了這一點,但問題是每次執行代碼都會導致結果不同。 –
我剛剛看到你的評論 - 這是否修復?如果不是,請確認兩行「ŁÓDŹ」和「?Ԅ?」是否來自兩個不同的URL位置。 –
你是對的,那些是不同的地點:兩個不同的人的出生地點發現兩個不同的請求。但所有數據都來自一個數據庫。你有沒有使用請求模塊?代碼中的變量**行**可能如下所示:**'/listNames.do?idx=]&katalogId=2&pageNo=1&nameId=007&'** –