天天看點

python爬蟲之lxml

上一節介紹了用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這樣就可以遞歸繼續往下爬了,