我的文本编辑器设置为使用缩进的所有空格,并且我已删除并重新缩进以获得良好的度量。我正在尝试使用scrapy来查看不同语法的执行情况,并尝试在两个代码块之间切换,一个代码add_xpath
,另一个代码item
。该代码适用于蜘蛛的一个版本,但不适用于另一个版本。它适用于:
class BasicSpider(scrapy.Spider):
name = 'basic'
allowed_domains = ['web']
start_urls = ['http://foobar.com']
def parse(self, response):
l = ItemLoader(item = TestItem(), response=response)
item = TestItem()
l.add_xpath('title', '/html/body/div[1]/article/header/div[3]/h1/text()')
l.add_xpath('author', '/html/body/div[1]/article/div/div[2]/div[1]/span/span[1]/a/text()')
l.add_xpath('published', '/html/body/div[1]/article/div/div[2]/div[2]/time/text()')
l.add_xpath('year', '/html/body/div[1]/article/div/div[2]/div[2]/time/text()')
l.add_xpath('month', '/html/body/div[1]/article/div/div[2]/div[2]/time/text()')
item['publication'] = 'Foobar'
l.add_xpath('content', '/html/body/div[1]/article/div/div[3]/div[1]//p/text()')
return l.load_item(), item
但是,如果我想注释掉上述代码并仅使用item
代替add_xpath
:
'''
l.add_xpath('title', '/html/body/div[1]/article/header/div[3]/h1/text()')
l.add_xpath('author', '/html/body/div[1]/article/div/div[2]/div[1]/span/span[1]/a/text()')
l.add_xpath('published', '/html/body/div[1]/article/div/div[2]/div[2]/time/text()')
l.add_xpath('year', '/html/body/div[1]/article/div/div[2]/div[2]/time/text()')
l.add_xpath('month', '/html/body/div[1]/article/div/div[2]/div[2]/time/text()')
item['publication'] = 'Foobar'
l.add_xpath('content', '/html/body/div[1]/article/div/div[3]/div[1]//p/text()')
return l.load_item(), item
'''
item['title'] = response.xpath('/html/body/div[1]/article/header/div[3]/h1/text()').extract()
item['author'] = response.xpath('/html/body/div[1]/article/div/div[2]/div[1]/span/span[1]/a/text()').extract()
item['published'] = response.xpath('/html/body/div[1]/article/div/div[2]/div[2]/time/text()').extract()
item['year'] = response.xpath('/html/body/div[1]/article/div/div[2]/div[2]/time/text()').extract()
item['month'] = response.xpath('/html/body/div[1]/article/div/div[2]/div[2]/time/text()').extract()
item['publication'] = 'Foobar'
item['content'] = response.xpath('/html/body/div[1]/article/div/div[3]/div[1]//p/text()').extract()
return item
它告诉我在item['title']
以及所有其他行上都有缩进错误,直到我将所有项目一直显示在左侧和外部的函数中,如下所示:
def parse(self, response):
#l = ItemLoader(item = TestItem(), response=response)
item = TestItem()
item['title'] = response.xpath('/html/body/div[1]/article/header/div[3]/h1/text()').extract()
item['author'] = response.xpath('/html/body/div[1]/article/div/div[2]/div[1]/span/span[1]/a/text()').extract()
如果我通过完全unindenting return语句尝试完全做同样的事情,它告诉我返回是在函数之外,当我把它插回里面函数时,我得到一个意外的缩进错误。如果我删除所有注释和整个add_xpath块,代码工作正常。
我希望能够轻松地在add_xpath和项目之间来回切换,而且我也不确定我是否误解了关于三重引号的规则。使用多个文本编辑器进行编辑时会发生这种情况。
答案 0 :(得分:2)
三重引号需要缩进以匹配您评论的内容。这是因为您将该代码转换为字符串,python不会忽略它,该字符串对您的输出没有任何影响。