使用HTTrack只下载特定子域下的链接(没有外部链接)



所以,这就是我试图下载的内容-https://www.slader.com/textbook/9781337624183-calculus-9th-edition/

看起来相当简单,我试着在";扫描规则";为了迫使它下载它下面的所有内容,但由于某种原因,整个过程在10秒内完成,它只下载了前面提到的链接本身。例如,除了具有https://www.slader.com/textbook/9781337624183-calculus-9th-edition/本身,我希望拥有源自它的所有链接,例如https://www.slader.com/textbook/9781337624183-calculus-9th-edition/311/也从本质上讲,所有从上面第一个链接开始的内容(包括来自其他域的嵌入图片,但没有外部链接(。据我所知,调整一些设置并添加一些规则到";扫描规则";部门本应发挥作用,但不幸的是,我自己却搞不明白。

为了只复制来自该主机的链接而不复制其他主机的链接,要包含您提交的第一个链接,您需要设置扫描规则。

在设置网址的菜单页上,点击";设置选项"按钮,然后单击"扫描规则"选项卡。然后确保您的扫描规则排除所有链接,然后确保它们包括来自所需源的链接。这种设置的例子是

+*.png +*.gif +*.jpg +*.jpeg +*.css +*.js -ad.doubleclick.net/* -mime:application/foobar
-*
+*[name].slader.com/*

这将基本上保存源自slader.com的所有链接,但不会存储该域之外的任何内容。

编辑

如果你只想要以你在扫描规则中键入的链接开头的链接,它看起来类似于:

+*.png +*.gif +*.jpg +*.jpeg +*.css +*.js -ad.doubleclick.net/* -mime:application/foobar
-*
+*[name].*[name]https://www.slader.com/textbook/9781337624183-calculus-9th-edition/*[name].*[name]/*

编辑

您可能无法获得诸如";表示函数的四种方法";通过HTTrack,由于特定景观的链接结构。如果你看看来源,他们的链接发布如下:

<tr data-url="/textbook/9781337624183-calculus-9th-edition/17/" class="exercise-group">
<td>1.1</td>
<td style="width: 360px;">Four Ways to Represent a Function</td>
<td style="width: 230px;">Exercises</td>
<td style="width: 74px;">p.17</td>
</tr>

正如你所看到的,他们使用dataurl属性来定位下一个页面,并使用JS库来实际导航浏览器。由于这不是一个锚标签,HTTrack不知道它应该跟随它,因为它不认为它是一个链接。

一些替代方案是使用Selenium或Scrapy之类的东西来编写一个具有自己的规则的web scraper,这样会更好地理解它

最新更新