1. 程式人生 > >RedisCrawlSpider爬蟲遇到 `明威把`不能轉換為漢字的解決辦法

RedisCrawlSpider爬蟲遇到 `明威把`不能轉換為漢字的解決辦法

問題闡述

爬取網頁時,正常情況下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