我试图从运行脚本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'的版本。 –