在上面的三篇中我们html的解析都是用了正则表达式进行匹配。下面我们主要说一下一个使用起来很简单的模块xpath进行匹配解析html文本。
Chrome上有一款插件:XPath Helper,直接在浏览器就可以验证xpath表达式的书写是否正确。
lxml 使用流程
1. from lxml import etree 2. parseHtml = etree.HTML(html) 3. rList = parseHtml.xpath('表达式')
xpath匹配规则
1. 获取节点对象 //div[@class="test"] 2. 获取节点属性值 //div[@class="test"]//a/@src 3. 函数 //div[contains(@class,"test")]/a/@href 4.获取节点对象内容 //div/a/text()
抓取Demo实例
import requests from lxml import etree url = 'https://maoyan.com/board/4?offset=10' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' } # 获取页面 res = requests.get(url, headers=headers) html = res.text parseHtml = etree.HTML(html) rList = parseHtml.xpath('//dl[@class="board-wrapper"]/dd') for r in rList: name= r.xpath('./a/@title') print(name)