Python爬虫基础——XPath语法的学习与lxml模块的使用
XPath与正则都是用于数据的提取,二者的区别是:
- 正则:功能相对强大,写起来相对复杂;
- XPath:语法简单,可以满足绝大部分的需求;
所以,如果你可以根据自己的需要进行选择。
一、首先,我们需要为Google浏览器配置XPath插件:
请自行学习,效果如下:
二、XPath的语法:
注意:
XPath的索引从1开始。
三、XPath的案例:
一级分类:
//h3[@class="classify_c_h3"]/a/text()
二级分类:
//div[@class="classify_list"]/span/a/text()
模糊查询:
//div[contains(@class,"classify_list")]/span/a/text()
四、lxml模块的使用
import lxml.etree as le with open('edu.html', 'r', encoding='utf-8') as f: html = f.read() # print(html) # 转换为XPath对象 html_x = le.HTML(html) # print(html_x) # 匹配一二级分类的父标签 div_x_s = html_x.xpath('//div[@class="classify_cList"]') # 直接从HTML中取则不用加. data_s = [] for div_x in div_x_s: # 一级分类 category1 = div_x.xpath('./h3/a/text()')[0] # 记得加. # 二级分类 category2_s = div_x.xpath('./div/span/a/text()') # 表示从当前节点进行筛选 data_s.append( dict( category1=category1, category2_s=category2_s ) ) print(data_s) for data in data_s: print(data.get('category1')) for category2 in data.get('category2_s'): print(' ', category2)
相关推荐
我欲疾风前行 2020-04-30
RuoShangM 2020-03-23
Kwong 2020-01-12
爱好HtmlCssJs 2019-11-25
loverlucky 2019-05-10
cxcxrs 2020-07-28
learnpy 2020-04-26
swiftwwj 2020-02-16
程松 2020-01-01
hilary0 2020-01-03
猛禽的编程艺术 2019-12-31
wklken的笔记 2019-12-17
YGLsmile 2019-12-06
LodbkMi 2019-12-02
zhaoxiaoheng 2019-11-17
四叶草 2019-11-11
beichenyx 2019-04-15
MemoryBuffer 2017-08-30
乐想屋 2019-07-01