Html 使用Scrapy删除原始javascript和css文件

Html 使用Scrapy删除原始javascript和css文件,html,url,scrapy,url-routing,Html,Url,Scrapy,Url Routing,我想用Scrapy刮取给定域上所有链接的javascript和css文件。问题是我不太明白如何从link元素中提取链接 假设我正在抓取example.com。有指向表单的js和css的链接: <link rel="stylesheet" href="/path_to_css/example.css"/> <script src="/path_to_js/example.js"></script> 这些链接从根域开始,因此没有问题。但是,如果链接与下面的链接类

我想用Scrapy刮取给定域上所有链接的javascript和css文件。问题是我不太明白如何从link元素中提取链接

假设我正在抓取example.com。有指向表单的js和css的链接:

<link rel="stylesheet" href="/path_to_css/example.css"/>
<script src="/path_to_js/example.js"></script>
这些链接从根域开始,因此没有问题。但是,如果链接与下面的链接类似,它就会开始变得混乱:

<link rel="stylesheet" href="path_to_css/example.css"/>
<script src="path_to_js/example.js"></script>
这些相对URL的工作原理是,如果我在example.com/some_page/上,链接路径会附加到example.com/some_page/path_to_js/example.js。然而,在实际的网页中,它并不总是这样工作的。在一些具有语言选择的网站上,例如example.com/en/some_页面,相对路径从example.com/en开始,而不是该页面的完整路径

因此,当您希望在example.com/en/some_page/path_to_js/example.js上找到这些文件时,您可以在example.com/en/path_to_js/example.js上找到它们


有什么方法可以理解相对路径从何处开始?

在进行刮取时,Scrapy允许您从相对URL创建绝对URL

你可以这样做

for link in response.css("link"):
    response.urljoin(link.css("::attr(href)").extract_first())

for script in response.css("script"):
    response.urljoin(script.css("::attr(src)").extract_first())