कभी-कभी जब मैं किसी साइट को परिमार्जन करता हूं, तो वह होस्टनाम (जैसे /search/en या search/en) के साथ url नहीं लौटाती है। मैं स्क्रैपी में होस्टनाम कैसे प्राप्त करूं ताकि मैं अनुरोध करने से पहले इसे जोड़ सकूं? वर्तमान में, मैं इसे हार्डकोडिंग कर रहा हूं।

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
user9861845 10 सितंबर 2018, 15:41

1 उत्तर

सबसे बढ़िया उत्तर

आप 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 (स्क्रैपी 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)
0
Valdir Stumm Junior 10 सितंबर 2018, 17:08