在Scrapy中處理相對路徑和絕對路徑可以通過在提取數據時使用相應的方法來實現。
對于相對路徑,可以使用response.urljoin()方法來將相對路徑轉換為絕對路徑。例如:
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中直接處理相對路徑和絕對路徑。