Python3爬虫开发 笔记 第五章

笔记

1.XPath

XPath 这里的X代表的是XML,是一种查询语言。它可以在XML和HTML的树状结构中寻找结点。

2.XPath语句格式

写XPath就是写地址。

2.1 获取文本

//标签1[@属性1=“属性值1”]/标签2[@属性2=“属性值2”]/…/text()

2.2 获取属性值

//标签1[@属性1=“属性值1”]/标签2[@属性2=“属性值2”]/…/@属性n
其中@属性1="属性值1"不是必须的

2.3 XPath以相同字符串开头

这里的XPath的格式是:
//标签[starts-with(@属性名,“相同的开头部分”)]/text()

eg:

import lxml.html

source='''
	
	
	
		
		
	
	
		
需要的内容1
需要的内容2
需要的内容3
不需要的内容
'''
selector=lxml.html.fromstring(source) info=selector.xpath('//div[starts-with(@id,"test")]/text()') print (info)

运行结果:
Python3爬虫开发 笔记 第五章_第1张图片

2.4 属性中包含相同字符串

//标签[contains(@属性,“相同部分”)]

这个和statrt-with的区别就在于contains可以找字符串中的,而不仅仅是开头

2.5对XPath返回的对象执行XPath

首先使用

//标签[@属性=“属性内容”]

获取一个列表

然后使用

ul/li/text()
这里需要注意的就是在抓小的时候,不需要/

2.6 同时抓取不同标签下的文字

//div[@id="test"][0]

然后直接使用string(.)即可

3. Beautiful Soup4

Beautiful Soup4是从HTML和XML中提取数据。
因为是python开发的,所以速度比XPath慢(XPath是c开发的)。

3.1 接续源码

soup=BeautifulSoup(源码,'解释器')

这里的解释器,可以使用html.parser
也可以使用lxml

3.2 查找内容

查找单个的内容
使用soup.find()即可。

同样可以使用先抓大再抓小的技巧

find_all()可查取目标中的多个内容

你可能感兴趣的:(python)