我想从Java中的网站(或Python或PHP,如果在这些语言中显示更容易)拉取整个HTML源代码文件。我只希望查看HTML并通过几种方法扫描它 - 不以任何方式编辑或操作它,并且我真的希望我不会将它写入新文件,除非没有其他方式。有没有这样的库类或方法?如果没有,有什么办法可以解决这个问题吗?从Java中的网页拉取HTML
0
A
回答
5
在Java:
URL url = new URL("http://stackoverflow.com");
URLConnection connection = new URLConnection(url);
InputStream stream = url.openConnection();
// ... read stream like any file stream
此代码,有利于编写脚本的目的和内部使用。虽然我会反对将它用于生产用途。它不处理超时和失败的连接。
我建议使用HttpClient library进行生产使用。它支持身份验证,重定向处理,线程处理,池化等。
2
在Python:
import urllib
# Get a file-like object for the Python Web site's home page.
f = urllib.urlopen("http://www.python.org")
# Read from the object, storing the page's contents in 's'.
s = f.read()
f.close()
请参阅Python and HTML Processing了解更多详情。
0
也许您应该考虑一种替代方法,如从命令行运行标准实用程序(如wget或curl)以将站点树获取到本地目录树中。然后使用本地副本进行扫描(使用Java,Python等)。这样做应该更简单,而不是自己实现所有无聊的东西,比如错误处理,参数解析等等。
如果您想要获取网站中的所有页面,wget和curl不知道如何从HTML页面获取链接。另一种方法是使用open source web crawler。
我想我做错了什么。编译器告诉我URLConnection不能被实例化(这是一个抽象类)。如何实例化它是否正确,或者是否存在可以实例化的URLConnection的子类? – Brian 2009-12-03 03:56:32
我认为应该是 URL hp = new URL(“http://stackoverflow.com”); URLConnection hpCon = hp.openConnection(); – GustyWind 2009-12-03 04:10:30
@GustlyWind,谢谢。应该实际检查代码。 – notnoop 2009-12-03 05:27:53