制作一个网络爬虫

5

我想学习制作网络爬虫/蜘蛛程序,但我需要有人指导我开始的方向。

基本上,我的蜘蛛程序将搜索音频文件并对其进行索引。

我在考虑如何实现它。听说使用PHP会非常慢,我会VB.NET, 是否可以派上用场?

我想使用谷歌的文件类型搜索来获取要爬取的链接。这样做可以吗?

3个回答

2

如果你用Java制作网络爬虫,它必须是服务器端的吗?目前我使用的是共享主机,不支持Java,而且我目前无法负担独立服务器或VPS。 - Belgin Fish
如果你想的话,这个程序可以在你家里的电脑上运行。 - qw3n

2
在VB.NET中,您需要首先获取HTML,因此请使用WebClient类或HttpWebRequest和HttpWebResponse类。关于如何使用这些类的信息在互联网上有很多。
然后,您需要解析HTML。我建议使用正则表达式来完成。
您想要使用Google进行文件类型搜索的想法很好。几年前,我做了类似的事情,收集PDF以测试SharePoint中的PDF索引,效果非常好。

谢谢,你有什么想法可以让我从桌面VB应用程序向数据库中插入数据吗? - Belgin Fish
根据数据库的类型而定。对于 SQL Server,有 System.Data.SqlClient 命名空间。对于其他任何数据库,您需要查看 System.Data.OleDb 命名空间。如果您希望此程序在无人值守状态下运行,最好使用控制台 VB 应用程序。 - Chris Diver
2
关于使用正则表达式解析HTML...https://dev59.com/X3I-5IYBdhLWcg3wq6do可能是有史以来最好的SO答案。 - rfusca
谢谢链接,我想“解析”可能不是选择的正确词语,他只需从页面中提取所有相关的超链接,HTML的结构并不重要。 - Chris Diver

0

伪代码应该如下所示:

Method spider(URL startURL){ 
 Collection URLStore; // Can be an arraylist  
    push(startURL,URLStore);// start with a know url
       while URLStore ! Empty do 
         currURL= pop(URLStore); //take an url
         download URL page;
        push (URLx, URLStore); //for all links to URL in the page which are not already followed, then put in the list

在Java中从网页读取一些数据,您可以执行以下操作:

URL myURL = new URL("http://www.w3.org"); 
 BufferedReader in =  new BufferedReader( new InputStreamReader(myURL.openStream())); 
 String inputLine; 
 while ((inputLine = in.readLine()) != null) //you will get all content of the page
 System.out.println(inputLine); //  here you need to extract the hyperlinks
 in.close();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接