在Python中使用HTMLParser解析HTML的教程
如果我們要編寫一個(gè)搜索引擎,第一步是用爬蟲把目標(biāo)網(wǎng)站的頁(yè)面抓下來(lái),第二步就是解析該HTML頁(yè)面,看看里面的內(nèi)容到底是新聞、圖片還是視頻。
假設(shè)第一步已經(jīng)完成了,第二步應(yīng)該如何解析HTML呢?
HTML本質(zhì)上是XML的子集,但是HTML的語(yǔ)法沒有XML那么嚴(yán)格,所以不能用標(biāo)準(zhǔn)的DOM或SAX來(lái)解析HTML。
好在Python提供了HTMLParser來(lái)非常方便地解析HTML,只需簡(jiǎn)單幾行代碼:
from HTMLParser import HTMLParser from htmlentitydefs import name2codepoint class MyHTMLParser(HTMLParser): def handle_starttag(self, tag, attrs): print('<%s>' % tag) def handle_endtag(self, tag): print('</%s>' % tag) def handle_startendtag(self, tag, attrs): print('<%s/>' % tag) def handle_data(self, data): print('data') def handle_comment(self, data): print('<!-- -->') def handle_entityref(self, name): print('&%s;' % name) def handle_charref(self, name): print('&#%s;' % name) parser = MyHTMLParser() parser.feed('<html><head></head><body><p>Some <a href=\"#\">html</a> tutorial...<br>END</p></body></html>')
feed()方法可以多次調(diào)用,也就是不一定一次把整個(gè)HTML字符串都塞進(jìn)去,可以一部分一部分塞進(jìn)去。
特殊字符有兩種,一種是英文表示的 ,一種是數(shù)字表示的Ӓ,這兩種字符都可以通過(guò)Parser解析出來(lái)。
小結(jié)
找一個(gè)網(wǎng)頁(yè),例如https://www.python.org/events/python-events/,用瀏覽器查看源碼并復(fù)制,然后嘗試解析一下HTML,輸出Python官網(wǎng)發(fā)布的會(huì)議時(shí)間、名稱和地點(diǎn)。
- Python中使用HTMLParser解析html實(shí)例
- python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
- Python HTMLParser模塊解析html獲取url實(shí)例
- Python 爬蟲的工具列表大全
- Python爬蟲實(shí)現(xiàn)爬取百度百科詞條功能實(shí)例
- python爬蟲簡(jiǎn)單的添加代理進(jìn)行訪問(wèn)的實(shí)現(xiàn)代碼
- Python爬蟲框架Scrapy安裝使用步驟
- 使用Python編寫簡(jiǎn)單網(wǎng)絡(luò)爬蟲抓取視頻下載資源
- 零基礎(chǔ)寫python爬蟲之使用Scrapy框架編寫爬蟲
- Python HTML解析模塊HTMLParser用法分析【爬蟲工具】
相關(guān)文章
python中plot實(shí)現(xiàn)即時(shí)數(shù)據(jù)動(dòng)態(tài)顯示方法
這篇文章主要為大家詳細(xì)介紹了python中plot實(shí)現(xiàn)即時(shí)數(shù)據(jù)動(dòng)態(tài)顯示方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06Matplotlib使用Cursor實(shí)現(xiàn)UI定位的示例代碼
這篇文章主要介紹了Matplotlib使用Cursor實(shí)現(xiàn)UI定位的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03基于matplotlib+tkinter實(shí)現(xiàn)簡(jiǎn)單的繪圖系統(tǒng)
在理解matplotlib嵌入到tkinter中的原理之后,就已經(jīng)具備了打造繪圖系統(tǒng)的技術(shù)基礎(chǔ),所以本文來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的繪圖系統(tǒng),感興趣的小伙伴小伙伴可以了解一下2023-08-08python?實(shí)現(xiàn)dcmtk關(guān)聯(lián)pacs功能推送下拉影像(推薦)
這篇文章主要介紹了python?實(shí)現(xiàn)dcmtk關(guān)聯(lián)pacs功能?推送下拉影像,包含dcmtk關(guān)聯(lián)pacs技術(shù)筆記等相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10Flask如何接收前端ajax傳來(lái)的表單(包含文件)
這篇文章主要介紹了Flask如何接收前端ajax傳來(lái)的表單(包含文件),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Python使用sort和class實(shí)現(xiàn)的多級(jí)排序功能示例
這篇文章主要介紹了Python使用sort和class實(shí)現(xiàn)的多級(jí)排序功能,涉及Python基于面向?qū)ο蟮脑乇闅v、列表排序、添加等相關(guān)操作技巧,需要的朋友可以參考下2018-08-08基于python的selenium兩種文件上傳操作實(shí)現(xiàn)詳解
這篇文章主要介紹了基于python的selenium兩種文件上傳操作實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09pip matplotlib報(bào)錯(cuò)equired packages can not be built解決
這篇文章主要介紹了pip matplotlib報(bào)錯(cuò)equired packages can not be built解決,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01python中*args與**kwarsg及閉包和裝飾器的用法
這篇文章主要介紹了python中*args與**kwarsg及閉包和裝飾器的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07