具有条件的Scrapy嵌套选择器

时间:2016-01-18 20:05:14

标签: python scrapy

我正在尝试在可在此处找到的节点上运行以下代码: http://pastebin.com/r0GaCVLh

基本上:如果我的节点是table fielded我想在桌面上进行特定处理,否则如果它是table substitutes我想要一个不同的处理。

出于某种原因完全超出我的条件:

if table.xpath('./*[@class="table fielded"]'):

if table.xpath('./*[@class="table substitutes"]'):

似乎失败了。并且永远不会设置变量fielded。 以下是不起作用的代码片段(print仅用于首次亮相):

for table in sel.xpath('.//table[@class="table fielded" or @class="table substitutes"]'):
  print table.extract()
  if table.xpath('./*[@class="table fielded"]'):
    fielded = True
    print fielded
  if table.xpath('./*[@class="table substitutes"]'):
    fielded = False
    print fielded

1 个答案:

答案 0 :(得分:1)

让我们来看看这一行:

if table.xpath('./*[@class="table fielded"]')

在这里,您要搜索已找到的table fielded 中包含table的任何元素。显然,没有与此定位器匹配的元素。

相反,提取@class值并根据其值做出决定:

for table in sel.xpath('.//table[@class="table fielded" or @class="table substitutes"]'):
    table_class = table.xpath("@class").extract_first()

    if "fielded" in table_class:
        # do smth