我正在开发nodejs中的网络爬虫。我在网站抓取机构中创建了一个唯一的网址列表。但其中一些有像JPG,MP3,MPEG等扩展名...我想避免抓取有扩展名的人。有没有简单的方法来做到这一点?NodeJs网络爬虫文件扩展处理
0
A
回答
1
突出两个选项。
1)使用path
检查每一个网址
正如评论所说,你可以使用path.extname
来检查文件扩展名。因此,这样的:
var test = "http://example.com/images/banner.jpg"
path.extname(test); // '.jpg'
这会工作,但这种感觉就像你会风不必创建文件类型的列表,你可以抓取,或者你必须避免。这是工作。
附注 - 请小心使用path
。通常,url
是解析链接的最佳工具,因为path
针对的是文件/目录,而不是网址。在某些系统(Windows)上,使用path
来操纵网址可能会导致戏剧性,因为涉及到斜线。公正的警告!
2)获取HEAD为每个链接&看看content-type
设置为text/html
你可能有理由避免更多的网络电话。如果是这样,这不是一个选项。但如果可以拨打其他电话,则可以为每个链接抓取HEAD并检查存储在content-type
中的MIME类型。
事情是这样的:
var headersOptions = {
method: "HEAD",
host: "http://example.com",
path: "/articles/content.html"
};
var req = http.request(headersOptions, function (res) {
// you will probably need to also do things like check
// HTTP status codes so you handle 404s, 301s, and so on
if (res.headers['content-type'].indexOf("text/html") > -1) {
// do something like queue the link up to be crawled
// or parse the link or put it in a database or whatever
}
});
req.end();
一个好处是,你只抢人头,所以即使该文件是一个巨大的视频什么的,不会堵塞东西。你得到的头,看content-type
是一个视频或其他,然后移动,因为你对这种类型不感兴趣。
其次,您不必跟踪文件名,因为您使用标准MIME类型来区分html和其他数据格式。
+0
感谢您的帮助。这非常有用。 –
相关问题
- 1. 网络爬虫如何处理javascript
- 2. 网络爬虫
- 3. PHP网络爬虫
- 4. java网络爬虫
- 5. Python网络爬虫
- 6. 需要网络爬虫
- 7. 自动网络爬虫
- 8. 网络爬虫,反馈?
- 9. 网络爬虫不打印
- 10. 网络爬虫应用
- 11. 网络爬虫提取
- 12. 网络爬虫文本格式
- 13. 如何在Django中处理网络爬虫?
- 14. 我如何处理JavaScript的一个Perl的网络爬虫?
- 15. 针对网络爬虫的Python线程或多处理?
- 16. 让PHP网络爬虫尊重任何网站的robots.txt文件
- 17. 是否存在任何开放的,简单的可扩展的网络爬虫?
- 18. 是一个网络爬虫更合适?
- 19. 在Scala中的网络爬虫算法
- 20. 网络爬虫使用双绞线
- 21. 识别敌对网络爬虫
- 22. 与Python 2.7.9分页网络爬虫
- 23. 网络爬虫遇到什么危险?
- 24. 错误使用C#网络爬虫
- 25. PHP与Python对于网络爬虫
- 26. 制作网络爬虫/蜘蛛
- 27. 在android上的简单网络爬虫?
- 28. 网络爬虫和GET与POST请求
- 29. 网络爬虫产生输出缓存
- 30. 网络爬虫更新策略
https://nodejs.org/api/url.html和https://nodejs.org/api/path.html –
这不是我要找的。例如,在网站抓取结果“www.abc.com/xyz.jpg”,“www.abc.com/xyza.mpeg”,“www.abc.com/xyzb.mp3”中存在这些链接。大多数抓取npms基本上都会尝试抓取您提供给他们的每个网址。我不想抓取有扩展名的网址。 –
你有试过什么吗? – webduvet