如何更改列表xpath返回?

时间:2015-10-01 10:58:33

标签: python xpath web-scraping

mainCourse = tree.xpath('//div[@id="RM1127"]/div[@class="m01"]/text()')

我试图提取ID为RM1127的元素列表。这给了我一个清单。当ID RM1127中没有类m01时,如何插入空字符串?

我希望能够判断它是否会跳过某些内容。

2 个答案:

答案 0 :(得分:0)

该列表仅包含与XPath表达式匹配的文本节点,它不包含有关XPath未选择的元素的信息。

您需要编写自己的逻辑,以便在'类别RM1127'中不存在类m01的情况下将空白字符串插入列表。一种可能的方法是修改XPath以选择div[@id="RM1127"],以便您可以循环遍历div的完整集合,并根据需要将实际目标文本或空白文本插入到列表中,例如:< / p>

mainCourse = []
for div in tree.xpath('//div[@id="RM1127"]'):
    #store current list size
    size = len(mainCourse)
    #insert target text nodes to the list
    mainCourse.extend(div.xpath('./div[@class="m01"]/text()'))
    #if size doesn't change, meaning no target text nodes was found...
    if size == len(mainCourse):
        #...insert blank text to the list 
        mainCourse.append('')

答案 1 :(得分:0)

不确定你想要什么,但它在XPath 1.0中会变得棘手,因为(a)你可以返回的唯一一种集合是一组节点,(b)那些节点必须是从输入文档中选择的节点:您无法创建任何新内容,例如空字符串。除非你可以转向比XPath 1.0更高级的东西(例如XQuery),否则我认为你必须选择比你想要的更多的信息,然后在Python级别过滤它。