【发布时间】:2017-02-07 07:03:08
【问题描述】:
我正在尝试制作一个可以从网站上抓取信息的 Java 应用程序,我已经进行了一些谷歌搜索,并管理了非常简单的抓取工具,但还不够。 看来我的刮刀没有刮掉这个网站上的一些信息,尤其是我想刮的部分。
1.
Elements links = htmlDocument.select("a");
for (Element link : links) {
this.links.add(link.attr("href"));
}
Elements linksOnPage = htmlDocument.select("a[href]");
System.out.println("Found (" + linksOnPage.size() + ") links");
for(Element link : linksOnPage)
{
this.links.add(link.absUrl("href"));
}
我已经尝试了这两个代码,但我无法在 Elements 对象的任何地方找到该链接。 我相信我想要的那些信息是搜索的结果,所以当我的程序连接到那个 url 时,这些信息就消失了。我该如何解决这个问题?我想要一个程序,只要它启动,就可以抓取搜索结果。
所以我的问题是,
1.如何将该链接抓取到我的代码的 Elements 对象中?我做错了什么?
2.有什么方法可以选择该链接并仅进入该链接(不是所有超链接)?
final Document doc = Jsoup.connect("http://www.work.go.kr/empInfo/empInfoSrch/list/dtlEmpSrchList.do?pageIndex=2&pageUnit=10&len=0&tot=0&relYn=N&totalEmpCount=0&jobsCount=0&mainSubYn=N®ion=41000&lastIndex=1&siteClcd=all&firstIndex=1&pageSize=10&recordCountPerPage=10&rowNo=0&softMatchingPossibleYn=N&benefitSrchAndOr=O&keyword=CAD&charSet=EUC-KR&startPos=0&collectionName=tb_workinfo&softMatchingMinRate=+66&softMatchingMaxRate=100&empTpGbcd=1&onlyTitleSrchYn=N&onlyContentSrchYn=N&serialversionuid=3990642507954558837&resultCnt=10&sortOrderBy=DESC&sortField=DATE").userAgent(USER_AGENT).get();
try
{
Connection connection = Jsoup.connect(url).userAgent(USER_AGENT);
Document htmlDocument = connection.get();
this.htmlDocument = htmlDocument;
String qqq=htmlDocument.toString();
System.out.println(qqq);
if(connection.response().statusCode() == 200) // 200 is the HTTP OK status code
// indicating that everything is great.
{
System.out.println("\n**Visiting** Received web page at " + url);
}
if(!connection.response().contentType().contains("text/html"))
{
System.out.println("**Failure** Retrieved something other than HTML");
return false;
}
Elements linksOnPage = htmlDocument.select("a[href]");
System.out.println("Found (" + linksOnPage.size() + ") links");
for(Element link : linksOnPage)
{
this.links.add(link.absUrl("href"));
System.out.println(link.absUrl("href"));
}
return true;
}
catch(IOException ioe)
{
// We were not successful in our HTTP request
return false;
}
这是我用于抓取的全部代码。 这段代码,我用的是from this site.
【问题讨论】:
-
也许这个链接是用 Javascript 生成的?试试这个stackoverflow.com/documentation/jsoup/4632/…
-
我发现在我的代码中,当我尝试连接到显示某些搜索结果的网页时,网页以空结果响应,而在浏览器(chrome)上显示正确的结果。(即使我使用相同的网址)。我打印出 Document 的文本,在应该是搜索结果的部分,网页显示“找不到您请求的页面”。那么..有人可以帮忙吗?
-
你有没有尝试在连接到 URL 时设置用户代理? stackoverflow.com/questions/10187603/useragent-in-jsoup
-
发布更多代码 - 如何获取 HTML?
-
我用我的代码编辑了我的问题。如何检查我的浏览器是否正确的用户代理..?如果用户代理错误,我不应该得到任何响应吗?我很困惑.. 或者我试图废弃的网站是否出于安全目的而阻止了我?