python爬蟲——gbk' codec can't encode character '\ufffd' in position 33986: illegal multibyte sequence

爬取東方方財富網公告時,出現編碼錯誤:
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’

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章