Scrapy auf Centos – Abängigkeiten mit Twisted und pyasn1-modules

Spread the info

Wer sich mit Scrapy (in meinem Fall auf CentOS) schon ausgiebig beschäftigt hat und es auch produktiv zum crawlen einsetzt, wird sicher schon auf den „Bug“ mit Twisted 17.0.9 gestoßen sein.

 

Scrapy funktioniert nicht mir der aktuellsten Twisted Version.

 

Nun findet man dazu einige Webseite, wo empfohlen wird, Twisted 16.4.1 zu installieren.
Befehl dazu: pip install „twisted==16.4.1“

 

Das hat bei mir allerdings auch nicht funktioniert.
Auf einer anderen Webseite in den hinteren Rängen bei Google fand ich dann den Hinweis, eine noch ältere Version von Twisted zu installieren.

Bei mir funktionierte dann die Version 13.0.0

Befehl dazu: pip install „twisted==13.0.0“

 

Ich wollte aber nicht akzeptieren, das ich nun ewig, oder bis das gefixt wird oder ich das OS wechsle, mit diesen alten Versionen arbeiten soll.

Vor allem auch deswegen, weil manche Webseiten mit SSL Verschlüsselung damit nicht funktioniert. (TLS ging, SSL nicht !)

 

Da bei vielen anderen die Version Twisted 16.4.1 mit Scrapy 1.5 funktioniert, hab ich versucht rauszufinden, woran es liegt, dass es bei mir nicht geht.

 

Bei mir kam mit 16.4.1 immer diese Fehlermeldung:

Traceback (most recent call last):
File „/bin/scrapy“, line 7, in
from scrapy.cmdline import execute
File „/usr/lib64/python2.7/site-packages/scrapy/cmdline.py“, line 9, in
from scrapy.crawler import CrawlerProcess
File „/usr/lib64/python2.7/site-packages/scrapy/crawler.py“, line 7, in
from twisted.internet import reactor, defer
File „/usr/lib64/python2.7/site-packages/twisted/internet/reactor.py“, line 38, in
from twisted.internet import default
File „/usr/lib64/python2.7/site-packages/twisted/internet/default.py“, line 56, in
install = _getInstallFunction(platform)
File „/usr/lib64/python2.7/site-packages/twisted/internet/default.py“, line 44, in _getInstallFunction
from twisted.internet.epollreactor import install
File „/usr/lib64/python2.7/site-packages/twisted/internet/epollreactor.py“, line 24, in
from twisted.internet import posixbase
File „/usr/lib64/python2.7/site-packages/twisted/internet/posixbase.py“, line 18, in
from twisted.internet import error, udp, tcp
File „/usr/lib64/python2.7/site-packages/twisted/internet/tcp.py“, line 28, in
from twisted.internet._newtls import (
File „/usr/lib64/python2.7/site-packages/twisted/internet/_newtls.py“, line 21, in
from twisted.protocols.tls import TLSMemoryBIOFactory, TLSMemoryBIOProtocol
File „/usr/lib64/python2.7/site-packages/twisted/protocols/tls.py“, line 65, in
from twisted.internet._sslverify import _setAcceptableProtocols
File „/usr/lib64/python2.7/site-packages/twisted/internet/_sslverify.py“, line 203, in
verifyHostname, VerificationError = _selectVerifyImplementation(OpenSSL)
File „/usr/lib64/python2.7/site-packages/twisted/internet/_sslverify.py“, line 178, in _selectVerifyImplementation
from service_identity import VerificationError
File „/usr/lib/python2.7/site-packages/service_identity/__init__.py“, line 7, in
from . import cryptography, pyopenssl
File „/usr/lib/python2.7/site-packages/service_identity/pyopenssl.py“, line 12, in
from pyasn1_modules.rfc2459 import GeneralNames
File „/usr/lib/python2.7/site-packages/pyasn1_modules/rfc2459.py“, line 1010, in
class AttributeTypeAndValue(univ.Sequence):
File „/usr/lib/python2.7/site-packages/pyasn1_modules/rfc2459.py“, line 1014, in AttributeTypeAndValue
openType=opentype.OpenType(‚type‘, certificateAttributesMap))
TypeError: __init__() got an unexpected keyword argument ‚openType‘

 

 

Dieser Fehler kam, weil ich pyasn1-modules 0.2.1 durch ein früheres Update aller installierten pip Komponenten installiert hatte.

Mit

pip install „pyasn1-modules<=0.2.0“

 

Habe ich nun pyasn1-modules 0.1.5 installiert und nun funktioniert Scrapy auch mit Twisted 16.4.1 und auch die SSL Webseiten kann ich wieder crawlen.

 

Bei Gelegenheit werde ich mal weiter mit Twisted 17.0.9 testen. Vielleicht gibt es auf Github und Co. mittlerweile neue Informationen zu den Abhängigkeiten/Versionen.

 

Update 31.01.2019

 

Mit python 2.7 habe ich jetzt scrapy 1.6.0 mit Twisted 1.6.6 und pyasn1-modules 0.2.4 laufen.

Twisted Version 17 und neuer funktioniert bei mir nicht.

 

Mit python 3.6 bzw pip3.6 funktioniert nun scrapy auch mit der neuen Twisted Version !!

 

pip von python 2 ist auch nur noch bis Jänner 2020 supportet. Ein Umstieg auf pip3 wäre daher dieses Jahr ohnehin notwendig, sofern man Wert auf Sicherheit und künftige Updates legt.

 

 

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert