Javascript解析器出现索引错误
Index error with Javascript parser
我正在使用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]
只要在已爬网的页面上找到该项目,此操作就可以正常工作。如果不是,我会得到一个错误,即列表索引超出范围。我原以为"不是无:"语句会对此进行排序,但事实似乎并非如此。
有人看到我做错了什么吗?
感谢
很可能您的xpath
调用返回的是一个空列表,而不是None
。将您的支票更改为
if script is not None and len(script) > 0:
应该解决这个问题。或者更简单地说,你可以依靠的真实性
if script:
由于CCD_ 3和CCD_。这与较长的对应部分做了相同的事情。
相关文章:
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- Safari 5.1.7 flexslider/jquery工具冲突z索引错误
- 对象中的索引错误
- 通过AJAX访问时,$_POST中出现未定义的索引错误
- 如何修复此未定义的索引错误?Ajax 到 PHP
- 创建一个具有全局辅助索引错误的表
- 文档选择中的索引错误,而所选文本有一个点
- 放大弹出菜单-索引错误
- Javascript解析器出现索引错误
- 清单中的ExecJS::RuntimeError#索引错误
- jquery ajax请求中出现未定义索引错误
- 获取'未定义索引'错误'与上面的'字段
- php/javascript邮件表单索引错误
- AJAX调用成功,但抛出未定义索引错误
- Javascript选择第一个非假值显示数组索引错误
- Php mysql未定义索引错误使用jquery从一个页面传输数据到另一个页面
- 不断得到未定义的索引错误,不知道如何声明值在子模态窗口
- PHP post请求未识别索引错误
- 谷歌可视化数据视图.setRows():无效的行索引错误
- 如果出现错误“索引错误:列出索引超出范围”,请重新加载页面