как избежать «scrapy.exceptions.NotSupported: неподдерживаемая схема URL «: для этой схемы не доступен обработчик»

#python-3.x #scrapy

#python-3.x #scrapy

Вопрос:

Я хотел перейти по ссылке в написанном мной выражении xpath, но я получаю это сообщение об ошибке. Как избежать этого и успешно перейти по ссылке.

 import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule


class JobSpider(CrawlSpider):
    name = 'job'
    allowed_domains = ['www.irishjobs.ie']
    user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"

    #start_urls = ['http://www.irishjobs.ie/ShowResults.aspx?Keywords=python amp;autosuggestEndpoint=/autosuggestamp;Location=0amp;Category=amp;Recruiter=Companyamp;Recruiter=Agencyamp;btnSubmit=Search/']

    def start_requests(self):
        yield scrapy.Request(url = "'http://www.irishjobs.ie/ShowResults.aspx?Keywords=python amp;autosuggestEndpoint=/autosuggestamp;Location=0amp;Category=amp;Recruiter=Companyamp;Recruiter=Agencyamp;btnSubmit=Search/", headers= {
            'User-Agent': self.user_agent
        })
    rules = (
        Rule(LinkExtractor(restrict_xpaths= "//div[@class='job-result-title']/h2/a"), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        print(response.url)
 

Ответ №1:

В вашем коде простая опечатка. попробуйте это.

 def start_requests(self):
        yield scrapy.Request(url = "http://www.irishjobs.ie/ShowResults.aspx?Keywords=python amp;autosuggestEndpoint=/autosuggestamp;Location=0amp;Category=amp;Recruiter=Companyamp;Recruiter=Agencyamp;btnSubmit=Search/", headers= {
            'User-Agent': self.user_agent
        })
 

в URL есть дополнительная ' кавычка, удалите ' ее. Тогда spider в порядке.

 yield scrapy.Request(url = "'http://www.irishjobs.ie/ShowResults.aspx?
                            ^^^
Keywords=python amp;autosuggestEndpoint=/autosuggestamp;Location=0amp;Category=amp;Recruiter=Companyamp;Recruiter=Agencyamp;btnSubmit=Search/"