Отсутствует схема в запросе URL

Я некоторое время застрял в этой ошибке, следующее сообщение об ошибке выглядит следующим образом:

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 

Код процедуры:

  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 

Я почти уверен, что это как-то связано с URL-адресом. Я прошу пройти курс лечения в LinkExtractor. При извлечении их в оболочке они выглядят примерно так:

 data=u'cart.php?target=category&category_id=826' 

По сравнению с другим url, извлеченным из рабочего паука:

 data=u'/path/someotherpath/category.php?query=someval' 

Я посмотрел на несколько вопросов о SO, таких как Загрузка изображений с помощью scrapy, но, читая его, я думаю, что у меня может быть немного другая проблема.

Я также посмотрел на это – http://static.scrapy.org/coverage-report/scrapy_http_request___init__.html

в котором объясняется, что ошибка возникает, если self.urls отсутствует «:», от просмотра начальных_уровней, которые я определил, я не могу понять, почему эта ошибка будет отображаться, поскольку схема четко определена.

Спасибо за прочтение,

Тоби

5 Solutions collect form web for “Отсутствует схема в запросе URL”

измените start_urls на:

 self.start_urls = ["http://www.bankofwow.com/"] 

preend url с 'http' или 'https'

Поскольку @Guy ответил ранее, атрибут start_urls должен быть списком, exceptions.ValueError: Missing scheme in request url: h start_urls exceptions.ValueError: Missing scheme in request url: h сообщение приходит из этого: « h » в сообщении об ошибке является первым символом « http: // www. bankofwow.com/ ", интерпретируется как список (символов)

allowed_domains также должен быть списком доменов, иначе вы получите отфильтрованные запросы «offsite».

Измените restrict_xpaths на

 self.xpaths = """//td[@class="CatBg" and @width="25%" and @valign="top" and @align="center"] /table[@cellspacing="0"]//tr/td""" 

он должен представлять собой область в документе, где можно найти ссылки, она не должна напрямую ссылаться на URL-адреса

Из http://doc.scrapy.org/en/latest/topics/link-extractors.html#sgmllinkextractor

restrict_xpaths (str или list) – это XPath (или список XPath), который определяет регионы внутри ответа, где должны быть извлечены ссылки. Если задано, только текст, выбранный этими XPath, будет проверяться на наличие ссылок.

Наконец, обычно это можно определить как атрибуты класса, а не параметры, указанные в __init__ :

 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 bow.items import BowItem import sys import MySQLdb import hashlib from scrapy import signals from scrapy.xlib.pydispatch import dispatcher # _*_ coding: utf-8 _*_ class bankOfWow_spider(CrawlSpider): name = "bankofwow" allowed_domains = ["bankofwow.com"] start_urls = ["http://www.bankofwow.com/"] xpaths = '''//td[@class="CatBg" and @width="25%" and @valign="top" and @align="center"] /table[@cellspacing="0"]//tr/td''' rules = ( Rule(SgmlLinkExtractor(restrict_xpaths=(xpaths,))), Rule(SgmlLinkExtractor(allow=('cart.php?')), callback='parse_items'), ) 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) super(bankOfWow_spider, 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 

В принципе схема имеет синтаксис типа

 scheme:[//[user:password@]host[:port]][/]path[?query][#fragment] 

Примеры популярных схем включают http(s) , ftp , mailto , file , data и irc . Могут также существовать такие термины, как about или about:blank которыми мы знакомы.

Это более ясно в описании на той же странице определения:

  hierarchical part ┌───────────────────┴─────────────────────┐ authority path ┌───────────────┴───────────────┐┌───┴────┐ abc://username:password@example.com:123/path/data?key=value&key2=value2#fragid1 └┬┘ └───────┬───────┘ └────┬────┘ └┬┘ └─────────┬─────────┘ └──┬──┘ scheme user information host port query fragment urn:example:mammal:monotreme:echidna └┬┘ └──────────────┬───────────────┘ scheme path 

В вопросе о Missing schemes появляется [//[user:password@]host[:port]] часть, отсутствующая в

 data=u'cart.php?target=category&category_id=826' 

как уже упоминалось выше.

У меня была аналогичная проблема, когда эта простая концепция была бы достаточной для меня!

Надеюсь, это поможет некоторым.

измените start_urls на:

 self.start_urls = ("http://www.domainname.com/",) 

он должен работать.

  • Получить текущий URL-адрес в Python с помощью os.environ
  • Есть предопределенный класс для URL-адреса в Python?
  • urlib.py не работает с https?
  • Как извлечь URL-адрес из строки с помощью python?
  • TypeError: ListControl, должен установить последовательность (ошибка python)
  • Каков синтаксис добавления параметра GET в URL? питон; движок Google
  • Как добавить конечную косую черту для приложения для категоризации Django MPTT?
  • Как индексировать URL-параметры в Python?
  •  
    Interesting Posts for Van-Lav

    Вызов «del» по результату вызова функции вызывает «SyntaxError: не может удалить вызов функции»

    Keras Convolution2D Input: ошибка при проверке ввода модели: ожидается, что convolution2d_input_1 будет иметь форму

    Предварительно заполнить встроенный FormSet?

    Эффективный алгоритм для создания допустимых выражений с определенной целью

    Тестирование модуля App Engine: ImportError: каталог запуска не импортируется

    Что устанавливает sys.path с Python и когда?

    как свести к минимуму функцию с дискретными значениями переменных в scipy

    Как определить математическую функцию в SymPy?

    Неверное строковое значение в python + django + Mysql

    Определение, если число равномерно делит на 25, Python

    Значение «AttributeError: объект NoneType не имеет атрибута tk»?

    Использование .format () для форматирования списка с аргументами ширины поля

    Почему строка «else» дает недопустимую синтаксическую ошибку?

    Как разрешить изменение размера QMessageBox в PyQt4

    Python: Как получается, большой поплавок автоматически превращается в * inf *?

    Python - лучший язык программирования в мире.