Как получить имя хоста запроса? - PullRequest
0 голосов
/ 10 сентября 2018

Иногда, когда я очищаю сайт, он не возвращает URL с именем хоста (например, / search / en или search / en). Как мне получить имя хоста в scrapy, чтобы я мог добавить его, прежде чем сделать запрос? В настоящее время я жестко его кодирую.

def parse_table(self, response):
    for links in self._parse_xpath(response, 'table'):
        for link in links:
            # Annoying part, it's not dynamic and hardcoded, other 
            #functions also need to do this because of incomplete urls.
            yield Request(url='https://domain.io' + link,
                        callback=self.parse_document_tab)

1 Ответ

0 голосов
/ 10 сентября 2018

Вы можете использовать метод response.urljoin, чтобы присоединить ваш относительный URL к базовому URL:

def parse_table(self, response):
    for links in self._parse_xpath(response, 'table'):
        for link in links:
            yield Request(url=response.urljoin(link),
                          callback=self.parse_document_tab)

Или совершенно новый метод response.follow (Scrapy 1.4.0+), который создает правильный абсолютный URL-адрес и возвращает объект Request:

def parse_table(self, response):
    for links in self._parse_xpath(response, 'table'):
        for link in links:
            yield response.follow(link, callback=self.parse_document_tab)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...