在javaee中创建Web爬虫
我正在使用JavaEE技术创建一个网络爬虫。我已经创建了一个爬虫服务,其中包含WebCrawler在术语在javaee中创建Web爬虫,java,jakarta-ee,web,web-crawler,jsoup,Java,Jakarta Ee,Web,Web Crawler,Jsoup,我正在使用JavaEE技术创建一个网络爬虫。我已经创建了一个爬虫服务,其中包含WebCrawler在术语crawleRelation对象中的结果,该对象包含我感兴趣的信息 目前我正在使用JSOUP库来实现这一点。但它是不可靠的,我尝试连接三次,而且超时时间是10秒,但仍然是不可靠的 我所说的不可靠是指即使它可以被公开访问,它也不能被爬虫程序访问。我知道这可能是由于robots.txt排除的原因,但这也是允许的,但仍然是不负责任的 因此,我决定使用URLConnection对象,该对象具有open
crawleRelation
对象中的结果,该对象包含我感兴趣的信息
目前我正在使用JSOUP
库来实现这一点。但它是不可靠的,我尝试连接三次,而且超时时间是10秒,但仍然是不可靠的
我所说的不可靠是指即使它可以被公开访问,它也不能被爬虫程序访问。我知道这可能是由于robots.txt
排除的原因,但这也是允许的,但仍然是不负责任的
因此,我决定使用URLConnection
对象,该对象具有openConnection
,然后使用connect
方法进行此操作
我还有一个困扰我的要求,那就是:我必须获得爬网释放的响应时间(以毫秒为单位),这意味着从a页加载B页需要多少秒??我检查了URLConnection的方法,没有办法做到这一点
关于这个话题有什么想法吗?有人能帮我吗
我在考虑在之前和之后编写一个代码,在gettingContent代码和当前时间(以毫秒为单位)之前,用当前时间(以毫秒为单位)减去这些毫秒,然后保存到数据库中,但我想知道它是否准确
提前谢谢
编辑:当前实施
当前实现,它为我提供状态代码、内容类型等
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
public class GetContent {
public static void main(String args[]) throws IOException {
URL url = new URL("http://www.javacoffeebreak.com/faq/faq0079.html");
long startTime = System.currentTimeMillis();
URLConnection uc = url.openConnection();
uc.setRequestProperty("Authorization", "Basic bG9hbnNkZXY6bG9AbnNkM3Y=");
uc.setRequestProperty("User-Agent", "");
uc.connect();
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
String contentType = uc.getContentType();
System.out.println(contentType);
String statusCode = uc.getHeaderField(0);
System.out.println(statusCode);
}
}
这样做可以吗?或者我应该使用ApacheHttpClient或ApacheNutch之类的重API 试试ApacheHttpClient库。我的成绩很好。对于特定于HTTP的通信来说,这似乎更好一些。使用经验证的框架比重新发明轮子更好。试试ApacheNutch(我推荐1.x分支,2.x看起来太粗糙了)。实现自己的爬虫程序并支持并行性、robots.txt/“noindex”元标记、重定向、可靠性将是一件非常痛苦的事情。。。有很多问题需要解决 好的,这意味着您在该API/库中做了一些工作并遇到了问题。我知道构建一个API/库,然后浪费所有代码并转移到另一个API/库是很可怕的,但是如果您可能的话,因为
JSoup
只是一个解析器库,将来可能会给您带来更多问题,所以我建议您使用这些API/库。您可以也可用于此目的。下面是一些,通过做一些研究和开发,你可以找到一个很好的解决方案:)减去前后的时间对我来说相当准确。谢谢Danny。我认为对于加载时间,我将使用减法本身。我必须考虑使用哪种方法来获取实际内容。我考虑过这个库,但我不知道我不确定,它是否支持HTTPS?是的,它似乎有很好的支持,虽然有点冗长,但也不太糟糕。嗨,我决定使用HtmlUnit API,可以在这里找到:它还有一个加载时功能。基本上,它是为了测试,但它有我需要的所有东西。谢谢你的帮助。