gpt4 book ai didi

javascript - Javascript 解析器出现索引错误

转载 作者:行者123 更新时间:2023-12-03 11:47:59 25 4
gpt4 key购买 nike

我正在使用 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]

只要在已爬网的页面上找到该项目,此方法就可以正常工作。如果不是,我会收到列表索引超出范围的错误。我认为“is not None:”语句可以解决这个问题,但事实似乎并非如此。

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

谢谢

最佳答案

您的 xpath 调用可能返回一个空列表,而不是 None。将您的支票更改为

if script is not None and len(script) > 0:  

应该可以解决这个问题。或者更简单地说,您只需

即可信赖真实性
if script:

因为 None[] 都是假值。这与更长的对应物执行相同的操作。

关于javascript - Javascript 解析器出现索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25964032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com