RedisCrawlSpider爬蟲遇到 `明威把`不能轉換為漢字的解決辦法
阿新 • • 發佈:2018-11-06
問題闡述
爬取網頁時,正常情況下python3中能直接轉化為utf-8,即所謂的漢字能夠正常顯示。所以即使網頁中顯示的是這種escape sequence,獲取到之後能夠顯示正常,但是偶爾也不好使,不好使的情況下就會出現以下的charref狀態:
明威把
解決方法
In [1]: from html.parser import HTMLParser In [2]: HTMLParser().unescape("明威把") Out[2]: '明威把'
原因解釋
HtmlParser,顧名思義,是解析Html的一個工具。python自帶的。
一、常用屬性和方法介紹
HtmlParser是一個類,在使用時一般繼承它然後過載它的方法,來達到解析出需要的資料的目的。
1.常用屬性:
lasttag,儲存上一個解析的標籤名,是字串。
2.常用方法:
handle_starttag(tag, attrs) ,處理開始標籤,比如<div>
;這裡的attrs獲取到的是屬性列表,屬性以元組的方式展示
handle_endtag(tag) ,處理結束標籤,比如</div>
handle_startendtag(tag, attrs) ,處理自己結束的標籤,如<img />
handle_data(data) ,處理資料,標籤之間的文字
handle_comment(data) ,處理註釋,
<!-- -->
之間的文字
如果我們要編寫一個搜尋引擎,第一步是用爬蟲把目標網站的頁面抓下來,第二步就是解析該HTML頁面,看看裡面的內容到底是新聞、圖片還是視訊。
假設第一步已經完成了,第二步應該如何解析HTML呢?
HTML本質上是XML的子集,但是HTML的語法沒有XML那麼嚴格,所以不能用標準的DOM或SAX來解析HTML。
好在Python提供了HTMLParser來非常方便地解析HTML