爬取東方方財富網公告時,出現編碼錯誤:
gbk’ codec can’t encode character ‘\ufffd’ in position 33986: illegal multibyte sequence
原因是gbk不能編碼‘\ufffd’字符。
解決辦法:刪除文本中的‘\ufffd’字符。
原代碼如下:
def mini_spider(url):
response=requests.get(url)#發送請求返回響應
print(type(response.text))
try:
text=response.text.encode(encoding='gbk')#把響應轉化爲文本
except Exception as e:
print(e)
return None
html=etree.HTML(text)#使用HTML解析文本
content=html.xpath('//div[@class="detail-body"]/div[1]/text()')[0]#抓取公告正文
mini_spider(url='http://data.eastmoney.com/notices/detail/688081/AN201910311370104736,JUU1JTg1JUI0JUU1JTlCJUJFJUU2JTk2JUIwJUU3JUE3JTkx.html')
運行結果如下:
'gbk' codec can't encode character '\ufffd' in position 33986: illegal multibyte sequence
修改之後的代碼如下:
def mini_spider(url):
#解析行
response=requests.get(url)#發送請求返回響應
text=response.text.replace('\ufffd','')
try:
text=text.encode(encoding='gbk')#把響應轉化爲文本
except Exception as e:
print(e)
return None
html=etree.HTML(text)#使用HTML解析文本
content=html.xpath('//div[@class="detail-body"]/div[1]/text()')[0]#抓取公告正文
print(content)
mini_spider(url='http://data.eastmoney.com/notices/detail/688081/AN201910311370104736,JUU1JTg1JUI0JUU1JTlCJUJFJUU2JTk2JUIwJUU3JUE3JTkx.html')
參考文獻
1、Python異常UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\ufffd’