解析父/子具有相同标记的XML

时间:2015-05-25 15:23:58

标签: python xml xml-parsing beautifulsoup

我正在与popshops api& amp;在美丽的汤中解析XML。 数据有四个级别的类别。 (即家具是家庭和花园的子类别,婴儿托儿所家具是家具的子类别)

当所有内容具有相同的标记“类别”时,如何区分4个类别的类别。

<category id="16000" name="Home & Garden">
 <categories>
  <category id="16669" name="Furniture">
   <categories>
    <category id="17135" name="Baby Nursery Furniture">
     <categories>
      <category id="17146" name="Baby Beddings & Blankets" leaf="true"/>

2 个答案:

答案 0 :(得分:0)

Beautiful Soup文档突出显示时,您可以直接引用其属性值而不是元素或标记名称:

soup.findAll(id="16000")

OR

soup.findAll(name="Home & Garden")

答案 1 :(得分:0)

通常,您可以通过多种方式使用BeautifulSoup来区分同一个代码(我不知道您是否具有&#34的特定定义;区分&#34;这里)。一种可能的方法是通过层次结构/结构进行区分。例如,仅获得第四级深度<category> s:

subSubSubCategory = soup.select("category category category category");

具体针对第四级案例,您还可以通过评估属性leaf="true"来获取它们:

subSubSubCategory = soup.select("category[leaf='true']");

供参考:BeautifulSoup > CSS Selector

附注:如果您要解析的所有内容都是完美有效的XML,则可能需要考虑直接使用lxml