Pymongoを介してスクラピーパイプラインを使用してMongoDBに接続しようとしていますが、新しいデータベースを作成して、ちょうど擦ったもので移植していますが、問題。私は基本的なチュートリアルに従い、2つのコマンドラインを設定しました.1つはscongを実行し、もう1つはmongodを実行します。残念ながら、mongodを実行した後にスクラップコードを実行すると、mongodは、私がセットアップしようとしている、そして、ポート27107の接続を待っているという通知をパイプライン上で受け取るようには見えません。 Iは、ドキュメント/ PyProjects /のtwitterBOT(Scratch MongoDBパイプラインが動作しない)
として設定Iコマンドライン2(のmongod)の文書/ PyProjects /のtwitterBOT /クルーグマン
としてディレクトリを設定するコマンドライン1(scrapy)において
スクリプトI使用しています次のとおりです。 クルーグマン/クルーグマン/スパイダー/ krugSpider.py(ポール・クルーグマンのブログエントリを引く):
from scrapy import http
from scrapy.selector import Selector
from scrapy.spiders import CrawlSpider
import scrapy
import pymongo
import json
from krugman.items import BlogPost
class krugSpider(CrawlSpider):
name = 'krugbot'
start_url = ['https://krugman.blogs.nytimes.com']
def __init__(self):
self.url = 'https://krugman.blogs.nytimes.com/more_posts_jsons/page/{0}/?homepage=1&apagenum={0}'
def start_requests(self):
yield http.Request(self.url.format('1'), callback = self.parse_page)
def parse_page(self, response):
data = json.loads(response.body)
for block in range(len(data['posts'])):
for article in self.parse_block(data['posts'][block]):
yield article
page = data['args']['paged'] + 1
url = self.url.format(str(page))
yield http.Request(url, callback = self.parse_page)
def parse_block(self, content):
article = BlogPost(author = 'Paul Krugman', source = 'Blog')
paragraphs = Selector(text = str(content['html']))
article['paragraphs']= paragraphs.css('p.story-body-text::text').extract()
article['links'] = paragraphs.css('p.story-body-text a::attr(href)').extract()
article['datetime'] = content['post_date']
article['post_id'] = content['post_id']
article['url'] = content['permalink']
article['title'] = content['headline']
yield article
クルーグマン/クルーグマン/ settings.py:
ITEM_PIPELINES = ['krugman.pipelines.KrugmanPipeline']
MONGODB_SERVER = 'localhost'
MONGODB_PORT = 27017
MONGODB_DB = 'ScrapeDB'
MONGODB_TWEETS = 'tweetCol'
MONGODB_FACEBOOK = 'fbCol'
MONGODB_BLOG = 'blogCol'
クルーグマン/クルーグマン/ pipelines.py
from pymongo import MongoClient
from scrapy.conf import settings
from scrapy import log
class KrugmanPipeline(object):
def __init(self):
connection = MongoClient(settings['MONGODB_SERVER'], settings['MONGODB_PORT'])
db = connection[settings['MONGODB_DB']]
self.collection = db[settings['MONGODB_BLOG']]
def process_item(self, item, spider):
self.collection.insert_one(dict(item))
log.msg("Test this out")
return item
私はすべてのエラーメッセージが届かないので、私は、困難のトラブルシューティングを持っています。それはまったく発射を拒否しているようです。私の問題が何であるかについてのどんな考えですか?
私は私のパイプラインオブジェクトが呼び出されているものということから、open_spiderで接続を開き、close_spider方法でそれを閉じますが、その – Erdenezul