Esquema faltante en la url de solicitud
He estado atascado en este error por un tiempo, el siguiente mensaje de error es el siguiente:
File "C:\Python27\lib\site-packages\scrapy-0.20.2-py2.7.egg\scrapy\http\request\__init__.py", line 61, in _set_url
raise ValueError('Missing scheme in request url: %s' % self._url)
exceptions.ValueError: Missing scheme in request url: h
Código Scrapy:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import Selector
from scrapy.http import Request
from spyder.items import SypderItem
import sys
import MySQLdb
import hashlib
from scrapy import signals
from scrapy.xlib.pydispatch import dispatcher
# _*_ coding: utf-8 _*_
class some_Spyder(CrawlSpider):
name = "spyder"
def __init__(self, *a, **kw):
# catch the spider stopping
# dispatcher.connect(self.spider_closed, signals.spider_closed)
# dispatcher.connect(self.on_engine_stopped, signals.engine_stopped)
self.allowed_domains = "domainname.com"
self.start_urls = "http://www.domainname.com/"
self.xpaths = '''//td[@class="CatBg" and @width="25%"
and @valign="top" and @align="center"]
/table[@cellspacing="0"]//tr/td/a/@href'''
self.rules = (
Rule(SgmlLinkExtractor(restrict_xpaths=(self.xpaths))),
Rule(SgmlLinkExtractor(allow=('cart.php?')), callback='parse_items'),
)
super(spyder, self).__init__(*a, **kw)
def parse_items(self, response):
sel = Selector(response)
items = []
listings = sel.xpath('//*[@id="tabContent"]/table/tr')
item = IgeItem()
item["header"] = sel.xpath('//td[@valign="center"]/h1/text()')
items.append(item)
return items
Estoy bastante seguro de que es algo que ver con la URL que le pido a Scrap que siga en el LinkExtractor. Al extraerlos en cáscara se ven algo así:
data=u'cart.php?target=category&category_id=826'
En comparación con otra url extraída de una araña de trabajo:
data=u'/path/someotherpath/category.php?query=someval'
He visto algunas preguntas sobre SO, comoDescargando imágenes con scrapy pero al leerlo creo que puedo tener un problema ligeramente diferente.
También eché un vistazo a esto ...http://static.scrapy.org/coverage-report/scrapy_http_request___init__.html
lo que explica que se genere el error si a self.urls le falta un ":", al mirar los start_urls que he definido, no veo por qué este error se mostraría, ya que el esquema está claramente definido.
Gracias por leer,
Toby