2012-03-07 47 views
0

什么是最简单的语言或方法来输入网站的网址并接收该网站上给定网址链接的每个网址。例如,如果我想看看我的网站上有多少次链接到一个名为oranges的页面,我会使用它。通过网站搜索特定的URL链接?

我会输入到程序“http://www.mysite.com”,我想搜索“http://www.mysite.com/oranges”的网址,我会运行程序。作为回报,我会得到一个文本文件或其他文件,其中包含指向“http://www.mysite.com/oranges”链接的所有URL。

输入的可能是:

http://www.mysite.com http://www.mysite.com/oranges

和输出可能是:

http://www.mysite.com/index.html 
http://www.mysite.com/broccoli.html 
http://www.mysite.com/asparagus.html 
http://www.mysite.com/fruits.html 
http://www.mysite.com/blog/post/my_favorite_fruits.html 

到目前为止,我已经尽我个人最喜欢的:批,并拿出下面不成功程序:

FOR /F %%A in (input.txt) DO (
    curl -o temp.html %%A 
    FOR /F "tokens=1,2 delims=:" %%B in ('FINDSTR /I /R "http://.*" temp.html') DO (
    ECHO %%B >> input.txt 
     FOR /F %%C in (temp.html) DO (
      FINDSTR /X "http://.*" %%C >> output.txt 
)   
) 
) 
exit 

它,如上所述,并没有真正的工作。

任何想法?这不是一项家庭作业,这是一个工作项目,它让我疯狂!

谢谢你们事先的任何和所有帮助。让我知道,如果我需要更具体的任何事情!

回答

1

从我的知识,你可能能做的最好的是一种算法,抓住通过HTML链接和可能的Sitemaps中的网址和搜索中的index.html。(基本上,创建自己的站点地图)。不能保证你会找到所有的东西,因为大多数开发者有一些原因隐藏的东西(取消链接等)。你可能可以创建一个递归方法来完成我上面提到的内容。

+1

我很困惑,因为你在说什么的实现。算法如何?在批处理? C++?蟒蛇?感谢你的回答! – 2012-03-07 20:22:07

+1

你问如何编程?在那种情况下,Jon的答案基本上是正确的。 (它可以用几乎任何语言编码,包括C++,Python,Delphi,Java,C#或其他)。如果你正在寻找一个现有的程序来扫描你的网站并告诉你在哪里连接了任何给定的URL,你可以尝试诸如“XENU”,“A1 Website Analyzer”等工具。 – Tom 2012-03-08 15:22:50

+0

正如汤姆指出的那样,有很多工具可以从中获得最佳效果。一种可行的方法是让搜索引擎为你做。你可以去谷歌/ BING /雅虎,并使用他们的网站:标签来搜索每个网站。在Google(网站:http://www.cnn.com)中输入EX类型NO PARENS并添加相应的http://和www。这会给你所有的网页,谷歌已找到该网站。你也许可以写一些东西,只是为了你给的网站URL而删除所有的搜索结果网址。 – 2012-03-08 21:43:32

1

尝试Scrapy http://scrapy.org/。这是一个python框架,可以帮助从启动url抓取html内容并对其进行刮取。

它还递归爬刮线路,并提供最好的算法,以不重复抓取网址。 该文件很容易遵循,并创建一个简单的程序。