Я пытаюсь запустить Scrapy паук из сценария вместо того, чтобы запустить его из командного терминала, как это:Ошибка при выполнении SCRAPY из сценария
scrapy crawl spidername
В документации Scrapy я нашел следующий пример: https://doc.scrapy.org/en/latest/topics/practices.html.
Теперь мой код выглядит следующим образом:
import scrapy
from scrapy.crawler import CrawlerProcess
from scrapy.loader import ItemLoader
from properties.items import PropertiesItem
class MySpider(scrapy.Spider):
name = "basic"
allowed_domains = ["web"]
start_urls = ['http://www.example.com']
def parse(self, response):
l = ItemLoader(item=PropertiesItem(), response = response)
l.add_xpath('title', '//h1[1]/text()')
return l.load_item()
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})
process.crawl(MySpider)
process.start() # the script will block here until the crawling is finished
Когда я запускаю этот сценарий, я получаю следующее сообщение об ошибке:
File "/Library/Python/2.7/site-packages/Twisted-16.7.0rc1-py2.7-macosx-10.11-intel.egg/twisted/internet/_sslverify.py", line 38, in TLSVersion.TLSv1_1: SSL.OP_NO_TLSv1_1, AttributeError: 'module' object has no attribute 'OP_NO_TLSv1_1'
Так что мои вопросы:
1) Каких ошибки это? Я не смог найти примеры в Интернете.
2) Что я могу изменить, чтобы запустить scrapy из этого скрипта?
Обновлено:
Добавлены пакеты, установленные для проекта
attrs==16.3.0
Automat==0.3.0
cffi==1.9.1
characteristic==14.3.0
constantly==15.1.0
cryptography==1.7.1
cssselect==1.0.0
enum34==1.1.6
idna==2.2
incremental==16.10.1
ipaddress==1.0.17
lxml==3.7.1
parsel==1.1.0
pyasn1==0.1.9 pyasn1-
modules==0.0.8
pycparser==2.17
PyDispatcher==2.0.5
pyOpenSSL==0.15.1
queuelib==1.4.2
Scrapy==1.3.0 service-
identity==16.0.0
six==1.10.0
tree==0.1.0
Twisted==16.6.0
virtualenv==15.1.0
w3lib==1.16.0 zope.
interface==4.3.3
Похож на проблему с Twisted. Можете ли вы вставить номера версий всех пакетов в свой проект. Предпочтительно вставляйте выходные данные 'pip freeze'. –
Это также может быть проблемой с версией OpenSSL, которую вы используете. Можете ли вы вставить версию OpenSSL, которую используете? Вы можете выполнить [этот ответ] (http://apple.stackexchange.com/questions/126830/how-to-upgrade-openssl-in-os-x), чтобы обновить его, если сможете. –
На самом деле, я думаю, вы должны обновить версию 'pyOpenSSL' с помощью' pip install --upprade pyOpenSSL'. –