溫馨提示×

Scrapy如何處理相對路徑和絕對路徑

小樊
107
2024-05-15 10:24:20
欄目: 編程語言

在Scrapy中處理相對路徑和絕對路徑可以通過在提取數(shù)據(jù)時使用相應(yīng)的方法來實現(xiàn)。

對于相對路徑,可以使用response.urljoin()方法來將相對路徑轉(zhuǎn)換為絕對路徑。例如:

from scrapy.http import HtmlResponse

response = HtmlResponse(url='http://example.com/page1', body=b'<a href="/page2">Page 2</a>')
relative_url = response.css('a::attr(href)').extract_first()
absolute_url = response.urljoin(relative_url)

print(absolute_url)
# Output: http://example.com/page2

這樣可以確保提取到的鏈接始終是絕對路徑。

另外,如果要在Spider中處理相對路徑和絕對路徑,也可以直接使用response.urljoin()方法。例如:

from scrapy.spiders import Spider

class MySpider(Spider):
    name = 'my_spider'
    start_urls = ['http://example.com/page1']

    def parse(self, response):
        relative_url = response.css('a::attr(href)').extract_first()
        absolute_url = response.urljoin(relative_url)

        yield {
            'url': absolute_url
        }

這樣可以在Spider中直接處理相對路徑和絕對路徑。

0