python爬虫之lxml简单学习案例使用方法

使用BeautifulSoup和lxml,可以解析代码并不规范的网页,并补充代码方便解析。使用过BeatuifulSoup解析网页,解析速度上并没有lxml快,本人爬取过一个网站,用aiohttp+BeautifulSoup,协程一起爬20多个网页,由于解析超时会中断,改用lxml后,就没有出现这个问题,爬取速度提升了数倍。

使用lxml步骤:

1,引入包:from lxml import etree

2,解析获得的网页:html = etree.HTML(要解析的网页或文本)

3,使用etree匹配获得要取得的内容:

例如:获得 html中所有的li内容:

li = html.xpath('//li')

下面是一份完整代码:

假设html内容如下:



***

...
  • 哈哈哈
  • ...

    python代码:

    from lxml import etree
        html = etree.HTML(html)
        li = html.xpath('//li/@class')      #代表从根目录寻找所有li的class属性,输出 ['name','haha']
        print(html.xpath('//li[contains(@class,"name")]/text()') ) #从根目录寻找class为name的li下的文本,输出为哈哈哈
        print(li.xpath('./a/@href'))  #从li节点开始寻找所有的a节点的href,输出为www.bai.com
        print(li[0].attrib) #输出li[0]的属性,输出为{"class":"name","id":"haha"}
        pirnt(li.text) #哈哈哈

    常用的符号如下,跟shell寻找目录路径规则相似:   

    表达式  描述
    nodename 选取此节点的所有子节点
    / 下一节点
    //  从当前节点开始递归下降,此路径运算符出现在模式开头时,表示应从根节点递归下降。
    . 选取当前节点
    ..  选取当前节点的父节点
    @   选取属性
    @*  选取所有属性
    []    应用筛选模式,可以用来筛选想要的内容


       

    你可能感兴趣的:(python,python,lxml,爬虫)