python - 抓取时获取错误实例方法没有属性 '__getitem__'

标签 python web-scraping web-crawler scrapy

我无法理解我收到此错误 -> 实例方法没有属性 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
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)

关于python - 抓取时获取错误实例方法没有属性 '__getitem__',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28164481/

相关文章:

python - 如何使用 python 抓取网站/将数据提取到数据库中?

javascript - JS/jQuery 中 'pacing' HTTP 请求的首选技术?

python - 使用 BeautifulSoup4 抓取网页

python - 使用 selenium 选择一个选项

java - 索引 65 处的路径中存在非法字符异常 [ java ]

Python self 论证

python - 无效的 block 标记 : 'bootstrap_icon' , 预期 'endblock'

python - 将 Redis 与 Sentinel 和 redis-py 一起使用时如何故障转移到新的主节点?

python - 保存视频在 opencv2-python 中不起作用

html - 使用 scrapy 和 css 从 HTML 中提取特定值