我試圖從運行腳本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
看起來像扭曲的問題。你可以粘貼項目中所有軟件包的版本號嗎?請優先粘貼'pip freeze'的輸出。 –
這也可能是您使用的OpenSSL版本的問題。你可以粘貼你使用的OpenSSL版本嗎?如果可以的話,你可以按照[這個答案](http://apple.stackexchange.com/questions/126830/how-to-upgrade-openssl-in-os-x)來更新它。 –
其實我認爲你應該用'pip install --upgrade pyOpenSSL'來更新'pyOpenSSL'的版本。 –