上一節介紹了用BeautifulSoup解析html文檔,但是弊端也說了,速度慢,相當的慢,而且解析的靈活度也不是很好,
下面我們介紹一個速度快,靈活度高的東西,lxml庫,
如果解析過json的人,應該對這麼不陌生,它既可以解析json又可以解析html,可以說相當的強大,而且使用起來很是有點爽,不麻煩
安裝這個庫的方式有兩種,一種是pip下載下傳,還有一個是去官方網站上下載下傳mis檔案,(連結自己去找)
如果下載下傳的是mis檔案,
1:修改字尾名為zip或者rar
2:解壓并找到lxml檔案夾
3:把上面得到的檔案夾複制到python/Lib/(也就是你的python源碼目錄的Lib檔案夾下)
之後就可以import了,
下面是介紹lxml解析html的代碼
from lxml import etree
import requests
def getHtml(html):
novelcontent = requests.get(html).content
return etree.HTML(novelcontent)
source = getHtml(rootUrl)
listclassify = source.xpath(u'//div[@class="subnav"]/ul/li/a')
fname = i.text.decode('utf-8').encode('gbk')[]
print fname .attrib['href']
href = fname .attrib['href']
text= fname .text
先導入包,lxml這個庫在解析html時,使用的是etree這個類,把得到的源碼放入進去,然後用xpath函數解析,
u’//div[@class=”subnav”]/ul/li/a’
//是根目錄的意思
div是html标簽
[@class=”subnav”]是一個限制條件
/ul/li/a是接下來的目錄
這句話的意思是找到根目錄下的div标簽且這個标簽的屬性是class =“subnav”,div标簽下面的ul/li 最後得到a标簽,
如上,得到a标簽之後,就可以得到href這樣就可以遞歸繼續往下爬了,