Javascript解析器的索引错误

Javascript解析器的索引错误,javascript,python,scrapy,Javascript,Python,Scrapy,我使用Scrapy和Javascript解析模块“slimit”在我正在爬行的页面中查找特定的Javascript项,如下所示: from scrapy.contrib.spiders import CrawlSpider, Rule from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor from scrapy.selector import Selector from scrapy.item import Item f

我使用Scrapy和Javascript解析模块“slimit”在我正在爬行的页面中查找特定的Javascript项,如下所示:

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import Selector
from scrapy.item import Item
from scrapy.spider import BaseSpider
from slimit import ast
from slimit.parser import Parser
from slimit.visitors import nodevisitor


def get_fields(data):
    parser = Parser()
    tree = parser.parse(data)
    return {getattr(node.left, 'value', ''): getattr(node.right, 'value', '')
            for node in nodevisitor.visit(tree)
            if isinstance(node, ast.Assign)}


class ExampleSpider(CrawlSpider):
    name = "goal2"
    allowed_domains = ["whoscored.com"]
    start_urls = ["http://www.whoscored.com/"]


    rules = [Rule(SgmlLinkExtractor(allow=(''),deny=('')]

    def parse_item(self, response):

        script = sel.xpath('//div[@id="team-stage-stats"]/following-sibling::script/text()')
        if script is not None:
            script = script.extract()[0]
只要在已爬网的页面上找到该项,就可以正常工作。如果不是,我会得到一个错误,列表索引超出范围。我原以为“IsNotNone:”语句会对其进行排序,但事实似乎并非如此

有人能看出我做错了什么吗


谢谢

很可能您的
xpath
调用返回的是一个空列表,而不是
None
。把你的支票换成

if script is not None and len(script) > 0:  
应该解决这个问题。或者更简单地说,你可以依靠真实性和公正性

if script:

因为
None
[]
都是错误的值。这与较长的对应项的作用相同。

对scrapy不太熟悉,但我熟悉的其他xpath引擎将在表达式不匹配时为您提供一个空列表
(即
[]
。@roippi hi,感谢您的回复。那我需要什么语法呢?像“if script not[]”这样的东西我猜不出来吗?只要
if script:
就足够了。