2
我使用Ruby + OpenURI + Nokogiri来爬取网站。抓取页面,找到所有a[href]
和(如果它们位于相同的域和正确的协议中),请按照它们再次抓取。仅基于MIME类型获取X/HTML链接(不是图像)
有时会有链接到大的二进制文件(例如jpeg,exe),我不想抓取这些文件。
我尝试使用HTTP "Accept" header得到了错误的MIME类型错误或空的响应,像这样:
require 'open-uri'
page = open(url, 'Accept'=>'text/html,application/xhtml+xml,application/xml')
...但仍OpenURI下载与另一MIME类型发送二进制文件。
除了在URL看着文件扩展名的可能文件类型,我怎么能防止下载(或检测冲突响应型)任意URL?
HEAD请求是要走的路。即使这可能是完全错误的,如果服务器无法弄清楚文件类型,或被指示说谎,但它仍然是最好的选择。 – 2012-04-26 23:20:29
这看起来很实用,但与仅测试URL扩展相比,性能受到影响的服务器速度很慢。我会接受它,因为这是正确的答案,但不幸的是我无法使用它。谢谢。 – Phrogz 2012-04-27 14:53:02