2016-04-27 7 views
0

壊れたデータをMongoDbに保存したいが、エラーが発生する。壊れたデータをMongoDBに保存する

ファイル "C:\ Pythom27 \ libには\サイト - パッケージはsix.py \"、行599、iteritems リターンd.iteritems(**キロワット)で はAttributeError: 'リスト' オブジェクトが 'iteritemを' は属性を持っていません。 私が使用していない属性は、どこにでもプログラムここ でiteritemを持っているプログラムコードです: ex.py

import scrapy 
from example.items import ExampleItem 


class ExampleSpider(scrapy.Spider): 
    name = 'aaa' 
    allowed_domains = ["in.bookmyshow.com"] 
    start_urls = ["https://in.bookmyshow.com/movies"] 

    def parse(self, response): 
    links = response.xpath('//a/@href').re('movies/[^\/]+\/.*$') 
    for url in set(links): 
     url = response.urljoin(url) 
     yield scrapy.Request(url, callback=self.parse_movie) 

    def parse_movie(self, response): 
    item = {} 
    item['Moviename'] = map(unicode.strip, response.xpath('.//h1[@id="eventTitle"]/text()').extract()) 
    item['Language'] = map(unicode.strip, response.xpath('/html/body/div[1]/div[2]/div[1]/div[2]/div[1]/div[3]/span[1]/a/text()').extract()) 
    item['Info'] = map(unicode.strip, response.xpath('/html/body/div[1]/div[2]/div[1]/div[2]/div[1]/div[3]/span[3]/a/text()').extract()) 
    yield item 

settings.py:

BOT_NAME = 'example' 

SPIDER_MODULES = ['example.spiders'] 
NEWSPIDER_MODULE = 'example.spiders' 

ITEM_PIPELINES = ['example.pipelines.MongoDBPipeline', ] 

MONGODB_SERVER = "localhost" 
MONGODB_PORT = 27017 
MONGODB_DB = "ticketbook" 
MONGODB_COLLECTION = "movies" 

pipleline.py

import pymongo 

from scrapy.conf import settings 
from scrapy.exceptions import DropItem 
from scrapy import log 

class ExamplePipeline(object): 
    def __init__(self): 
    connection = pymongo.Connection(settings['MONGODB_HOST'], settings['MONGODB_PORT']) 
    db = connection[settings['MONGODB_DATABASE']] 
    self.collection = db[settings['MONGODB_COLLECTION']] 

    def process_item(self, item, spider): 
    self.collection.insert(dict(item)) 
    log.msg("Item wrote to MongoDB database {}, collection {}, at host {}, port {}".format(
     settings['MONGODB_DATABASE'], 
     settings['MONGODB_COLLECTION'], 
     settings['MONGODB_HOST'], 
     settings['MONGODB_PORT'])) 
    return item 

私はどこが間違っているか知りたいです。

+0

してください。 –

+0

( 'valid'ブール値は必要ないことに注意してください:' DropItem'例外を送出すると、実行が中止されます) –

+2

'process_item'はどうやって呼びますか? –

答えて

関連する問題