本文共 2345 字,大约阅读时间需要 7 分钟。
XPath(XML Path Language)是一种用于在XML和HTML文档中定位节点或节点集的路径表达式语言。它通过路径表达式来描述从根节点到目标节点的路径。
nodename:表示选取此节点的所有子节点。/:表示从根节点选取。//:选择任意位置的某个节点。.:表示选取当前节点。..:表示选取当前节点的父节点。@:表示选取属性。classroom子元素的第一个student元素:/classroom/student[1]
classroom子元素的最后一个student元素:/classroom/student[last()]
classroom子元素的倒数第二个student元素:/classroom/student[last()-1]
classroom子元素的子元素的student元素:/classroom/student[position()<3]
lang的属性的name元素://name[@lang]
name元素,且这些元素拥有值为eng的lang属性://name[@lang='en']
classroom元素的所有student元素,且其中的age元素的值须大于20:.classroom.stduent[age>20]
classroom元素中的student元素的所有name元素,且其中的age元素的值须大于20:/classroom/stduent[age>20]/name
child、parent、ancestor等,用于指定定位的方向。 child:选取当前节点的所有子节点。parent:选取当前节点的父节点。ancestor:选取当前节点的所有先辈(父、祖父等)。ancestor-or-self:选取当前节点的所有先辈以及当前节点本身。descendant:选取当前节点的所有后代节点。descendant-or-self:选取当前节点的所有后代节点以及当前节点本身。preceding:选取文档中当前节点的开始标记之前的所有节点。following:选取文档中当前节点的结束标记之后的所有节点。preceding-sibling:选取当前节点之前的所有同级节点。following-sibling:选取当前节点之后的所有同级节点。self:选取当前节点。attribute:选取当前节点的所有属性。namespace:选取当前节点的所有命名空间。classroom元素的所有student元素:/classroom/student[age=19+1]
classroom元素的所有student元素,且其中的age元素的值等于20:/classroom/student[age=40div2]
classroom元素中的student元素的所有name元素,且其中的age元素的值大于20:/classroom/student[age>20]/name
通过字符串创建:
soup = BeautifulSoup(htl_str, 'lxml')
其中'lxml'表示指定的解析方式。
通过文件创建:
soup = BeautifulSoup(open('index.html'))BeautifulSoup对象分为四种类型:
soup.title.namesoup.title.attrssoup.title.name = 'mytitle'soup.b.stringTag.contents:获取标记的直接子节点。Tag.children:获取标记的子节点生成器。Tag.descendants:获取标记的所有子孙节点生成器。Tag.parent:获取标记的父节点。Tag.parents:获取标记的所有父辈节点。find_all(name, attrs, recursive, text, **kwargs)name参数:查找所有名字为name的标记。attrs参数:查找具有指定属性的标记。text参数:查找文档中的字符串内容。classroom元素的所有student元素:em = root.xpath('//classroom/student')classroom元素中的student元素的name属性:name_elements = em.xpath('//classroom/student/name/text()')classroom元素中的student元素的age值:age_values = em.xpath('//classroom/student/age/text()')通过以上方法,可以高效地在HTML和XML文档中定位和提取所需的信息。
转载地址:http://rilfk.baihongyu.com/