Скрапи + Tor + MongoDB

У меня возникла проблема при использовании Scrapy + Mongodb с Tor. Я получаю следующую ошибку, когда пытаюсь использовать конвейер mongodb в Scrapy.

2012-11-05 13:41:14-0500 [scrapy] DEBUG: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
|S-chain|-<>-127.0.0.1:9050-<><>-127.0.0.1:27017-<--denied
Traceback (most recent call last):
  File "/usr/bin/scrapy", line 4, in <module>
    execute()
  File "/usr/lib/python2.7/dist-packages/scrapy/cmdline.py", line 131, in execute
    _run_print_help(parser, _run_command, cmd, args, opts)
  File "/usr/lib/python2.7/dist-packages/scrapy/cmdline.py", line 97, in _run_print_help
    func(*a, **kw)
  File "/usr/lib/python2.7/dist-packages/scrapy/cmdline.py", line 138, in _run_command
    cmd.run(args, opts)
  File "/usr/lib/python2.7/dist-packages/scrapy/commands/crawl.py", line 42, in run
    q = self.crawler.queue
  File "/usr/lib/python2.7/dist-packages/scrapy/command.py", line 33, in crawler
    self._crawler.configure()
  File "/usr/lib/python2.7/dist-packages/scrapy/crawler.py", line 43, in configure
    self.engine = ExecutionEngine(self.settings, self._spider_closed)
  File "/usr/lib/python2.7/dist-packages/scrapy/core/engine.py", line 33, in __init__
    self.scraper = Scraper(self, self.settings)
  File "/usr/lib/python2.7/dist-packages/scrapy/core/scraper.py", line 66, in __init__
    self.itemproc = itemproc_cls.from_settings(settings)
  File "/usr/lib/python2.7/dist-packages/scrapy/middleware.py", line 33, in from_settings
    mw = mwcls()
  File "/home/bharani/ABCD_scraper/political_forum_scraper/pipelines.py", line 9, in __init__
    settings['MONGODB_PORT'])
  File "/usr/local/lib/python2.7/dist-packages/pymongo/connection.py", line 290, in __init__
    self.__find_node()
  File "/usr/local/lib/python2.7/dist-packages/pymongo/connection.py", line 586, in __find_node
    raise AutoReconnect(', '.join(errors))
pymongo.errors.AutoReconnect: could not connect to localhost:27017: [Errno 111] Connection refused

Я не уверен, как решить эту проблему. Когда я не использую proxychains, он отлично ползает.

Любая помощь приветствуется.

Спасибо.


Редактировать:

Это не зависит от кода. См. эту ссылку: http://isbullsh.it/2012/04/Web-crawling-with-scrapy/

Это простое руководство по использованию Scrapy с MongoDB. Мы должны позвонить

scrapy crawl isbullshit

для запуска сканера, который отлично работает. Чтобы использовать Tor, его нужно вызвать так:

proxychains scrapy crawl isbullshit

Что не работает для меня. Исходный код руководства находится здесь: https://github.com/BaltoRouberol/isbullshit-crawler


person bdhar    schedule 05.11.2012    source источник


Ответы (3)


pymongo.errors.AutoReconnect: could not connect to localhost:27017: [Errno 111] Connection refused

Кажется, вы не можете подключиться к локальному хосту через порт 27017. Это правильный порт и правильный хост? Убедитесь в этом, также убедитесь, что сервер mongodb работает в фоновом режиме, иначе вы никогда не подключитесь к нему.

Если mongodb работает в фоновом режиме, удалите mongodb.lock

rm -r/var/lib/mongodb

и перезапустите сервер, что-то вроде;

sudo service mongodb start

в Дебиане или

sudo systemctl restart mongodb

в Арч Линукс

person Community    schedule 05.11.2012
comment
Я не думаю, что это проблема. Я получаю проблему только при запуске с использованием Tor. Если нет, парсер работает отлично, и данные сохраняются в mongodb. - person bdhar; 05.11.2012
comment
Пожалуйста, отредактируйте свой вопрос, добавив исходный код, чтобы мы могли понять, что вы делаете и как это исправить. - person ; 05.11.2012
comment
Это не зависит от кода. Это как-то связано со Scrapy. Я отредактировал свой вопрос с помощью простой версии моей проблемы (я также столкнулся с проблемой с этим учебным кодом). Спасибо. - person bdhar; 05.11.2012
comment
Это помогло мне восстановиться после сбоя виртуальной машины. Спасибо - person Sergey Goliney; 02.02.2013

Возможно, он пытается перенаправить ваше соединение с MongoDB (localhost:27017) на TOR. Если вы хотите исключить соединения с локальным хостом из проксичейнов, вы можете добавить следующую строку в свой /etc/proxychains.conf:

localnet 127.0.0.1 000 255.255.255.255
person Francois Dang Ngoc    schedule 23.11.2012

Откройте соединение mongo перед установкой прокси-сервера socks

person user2889561    schedule 30.03.2016