XPath 这里的X代表的是XML,是一种查询语言。它可以在XML和HTML的树状结构中寻找结点。
写XPath就是写地址。
//标签1[@属性1=“属性值1”]/标签2[@属性2=“属性值2”]/…/text()
//标签1[@属性1=“属性值1”]/标签2[@属性2=“属性值2”]/…/@属性n
其中@属性1="属性值1"不是必须的
这里的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)
//标签[contains(@属性,“相同部分”)]
这个和statrt-with的区别就在于contains可以找字符串中的,而不仅仅是开头
首先使用
//标签[@属性=“属性内容”]
获取一个列表
然后使用
ul/li/text()
这里需要注意的就是在抓小的时候,不需要/
//div[@id="test"][0]
然后直接使用string(.)即可
Beautiful Soup4是从HTML和XML中提取数据。
因为是python开发的,所以速度比XPath慢(XPath是c开发的)。
soup=BeautifulSoup(源码,'解释器')
这里的解释器,可以使用html.parser
也可以使用lxml
查找单个的内容
使用soup.find()即可。
同样可以使用先抓大再抓小的技巧
find_all()可查取目标中的多个内容