Python 刮取时,获取错误实例方法没有属性'__获取项目';
我无法理解我得到了这个错误->实例方法没有属性getitem。 我只是想从这个网站上提取部门名称Python 刮取时,获取错误实例方法没有属性'__获取项目';,python,web-scraping,scrapy,web-crawler,scrapy-spider,Python,Web Scraping,Scrapy,Web Crawler,Scrapy Spider,我无法理解我得到了这个错误->实例方法没有属性getitem。 我只是想从这个网站上提取部门名称 import scrapy from scrapy.contrib.spiders import CrawlSpider, Rule from scrapy.selector import Selector from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor from urlparse import urljoin fro
import scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import Selector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from urlparse import urljoin
from amazon.items import AmazonItem
class delhiveryspider(CrawlSpider):
name = "amazon"
allowed_domains = ["amazon.in"]
start_urls = ["http://www.amazon.in"]
def parse(self,response):
sites = response.xpath('//div[@id="nav_browse_flyout"]')
items = []
for site in sites:
item = AmazonItem()
item['main_title'] = site.xpath('.//li[@id="nav_cat_0"]/text()').extract[0]
items.append(item)
return items
您需要调用
extract()
,然后获取第一项:
item['main_title'] = site.xpath('.//li[@id="nav_cat_0"]/text()').extract()[0]
# HERE ^
如果希望每个项目都有一个单独的类别,请对其进行迭代:
for title in site.xpath('.//li[starts-with(@id, "nav_cat_")]/text()').extract():
item = AmazonItem()
item['main_title'] = title
items.append(item)
嘿,你能告诉我为什么它只提取一个列表,为什么没有提取所有类别吗???@NikhilParmar
//li[@id=“nav_cat_0”]/text()
匹配多个类别,然后你使用[0]
语法,你只从列表中获取第一个类别。@NikhilParmar如果我理解正确,您希望每个类别/标题都有一个单独的项目-请查看更新的答案。希望这就是你要问的。@NikhilParmar我明白你的意思了!更新了选择器中使用的xpath表达式。看看。@NikhilParmar更简单的方法是在这里提问,所以-我通常跟踪Scrapy
标记问题。很高兴这有帮助。