formrequest - urlparse: ModuleNotFoundError, presumiblemente en Python2.7 y bajo conda
uri % python (1)
Resolví (parcialmente) el problema, con la dirección apreciada de Martijn Pietters . Scrapy estaba extendiendo mi sistema instalado Python --Python 3.6-- en lugar de mi conda python de entorno --Python 2.7. En base a la documentación de instalación de conda.io/docs/user-guide/tasks/manage-environments.htm l y miniconda, agregar miniconda a la RUTA puede hacer que se llame al entorno miniconda antes que a otros entornos (si entiendo correctamente). Parece que necesito usar el terminal Anaconda para crear un entorno conda. Inicialmente estaba usando el terminal powershell (pensando que agregar miniconda al camino era suficiente). Espero haber explicado esto con suficiente habilidad para que otros eviten mi error.
Saludos,
Estoy intentando ejecutar mi propio proyecto de tratamiento. El código se basa en un libro bien escrito y el autor proporciona un gran parque de máquinas virtuales para ejecutar los guiones ilustrados en el libro. En la VM, el código funciona bien. Sin embargo, en un intento de practicar por mi cuenta, recibí el siguiente error:
File "(frozen importlib._bootstrap)", line 978, in _gcd_import
File "(frozen importlib._bootstrap)", line 961, in _find_and_load
File "(frozen importlib._bootstrap)", line 950, in _find_and_load_unlocked
File "(frozen importlib._bootstrap)", line 655, in _load_unlocked
File "(frozen importlib._bootstrap_external)", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "C:/users/me/dictionary_com/spiders/basic.py", line 3, in <module>
import urlparse
ModuleNotFoundError: No module named ''urlparse''
Inicialmente tenía Python 3 ejecutándose en mi máquina externa principal (fuera de la máquina virtual), y parece como si el autor estuviera usando Python 2 (¿todavía no sé cómo el escama 8 del editor Atom estaba entendiendo esto?). Tras la revisión de Python 2/3 problemas con urllib, ( python 2 y 3 extraen el dominio de la url y los registros de Heroku dicen "Ningún módulo llamado ''urlparse''" cuando uso import urlparse y https://github.com/FriendCode/gittle/ issues / 49 ) Probé las diversas soluciones de importación proporcionadas en estos enlaces. Instalé Python 2.7 (y verifiqué que $ python -V -> python2.7.13 lo configuró en ruta. Incluso intenté crear un entorno de conda para asegurarme de que estaba arrancando python2.7.13.
Mi script spider.py es el siguiente:
import datetime
import urlparse
import socket
import scrapy
from Terms.items import TermsItem
# you have to import processors from scrapy.loader to use it
from scrapy.loader.processors import MapCompose, Join
# you have to import Itemloader from scrapy.loader to use it
from scrapy.loader import ItemLoader
class BasicSpider(scrapy.Spider):
name = "basic"
allowed_domains = ["web"]
start_urls = [i.strip() for i in open(''lused.urls.txt'').readlines()]
def parse(self, response):
l = ItemLoader(item=TermsItem(), response=response)
# Load fields using XPath expressions
l.add_xpath(''term'', ''//h1[@class="head-entry"][1]/text()'',
MapCompose(unicode.strip, unicode.title))
l.add_xpath(''definition'', ''//*[@class="def-list"][1]/text()'',
MapCompose(unicode.strip, unicode.title))
# Housekeeping fields
l.add_value(''url'', response.url)
l.add_value(''project'', self.settings.get(''BOT_NAME''))
l.add_value(''spider'', self.name)
l.add_value(''server'', socket.gethostname())
l.add_value(''date'', datetime.datetime.now())
return l.load_item()
Mi script item.py es el siguiente:
from scrapy.item import Item, Field
class TermsItem(Item):
# Primary fields
term = Field()
definition = Field()
# Housekeeping fields
url = Field()
project = Field()
spider = Field()
server = Field()
date = Field()
En el editor de átomos, el inspector python flake8 señala / subraya (aduciendo: ''importado pero no usado''):
''importar urlparse''
''from scrapy.loader.processors import MapCompose, Join''
Sin embargo, cuando abro el código prácticamente idéntico utilizado en la máquina virtual proporcionada por el autor en el editor Atom, no marca nada ... ¡¡y se ejecuta el código !! ??
Desafortunadamente, me queda el mismo resultado de error después de probar los intentos de solución anteriores. Esperaba que alguien más se topara con este problema o puede detectar mi error según los detalles anteriores.