Java Jsoup解析页面Url

Java Jsoup解析页面Url,java,android,parsing,href,Java,Android,Parsing,Href,我面临着一个很大的问题。。我正在用一些文章分析这个页面。。如您所见,我可以解析一些信息:平铺、文章日期、评论和文章预览 目标: 我的目标是点击我解析的文章(这个操作已经可以了,我有我在下面写的信息列表),然后点击onClick我想进入文章本身查看内容。示例:如果我现在点击第一篇文章,它会显示以下URL:所有我需要查看的内容。应用程序也必须这样做 问题 我不知道该怎么做。但是通过解析每个帖子的url,我可以知道帖子的绝对路径。我可以这样分析它: try {

我面临着一个很大的问题。。我正在用一些文章分析这个页面。。如您所见,我可以解析一些信息:平铺、文章日期、评论和文章预览

目标: 我的目标是点击我解析的文章(这个操作已经可以了,我有我在下面写的信息列表),然后点击
onClick
我想进入文章本身查看内容。示例:如果我现在点击第一篇文章,它会显示以下URL:所有我需要查看的内容。应用程序也必须这样做

问题 我不知道该怎么做。但是通过解析每个帖子的url,我可以知道帖子的绝对路径。我可以这样分析它:

try {

                        Document doc = Jsoup.connect(BLOG_URL).get();
                        Elements links = doc.select("div.col-1-1 h2 a[href]"); 

                        for(Element sezione : links)
                        {

                            Log.d("Links",  sezione.attr("abs:href"));
                        }
                    } catch (Exception e) {

                        Log.e("ERROR", "Parsing Error");
                    }
然后返回每个href

问题

是否可以使用href解析每个页面内容?(p标签)谢谢

OnClick方法

lista.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    //What here?
                }
            });
lista.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//这是什么?
}
});

jsoup
无法处理网页上的动态操作。您需要使用一个能够处理这些动态执行的API,例如

假设您有可能将所有链接存储为Java集合实例的一部分,如
ArrayList
。如果我尝试以特定方法的形式解析第一个url(可以在运行时通过循环动态获取页面上所有url的内容):

使用HtmlUnit

public static void main(String... args)
            throws FailingHttpStatusCodeException, IOException {
        final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);

        WebRequest request = new WebRequest(
                new URL(
                        "http://multiplayer.it/articoli/"));

        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.setJavaScriptTimeout(10000);
        webClient.getOptions().setJavaScriptEnabled(true);
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
        webClient.getOptions().setTimeout(10000);

        HtmlPage page = webClient.getPage(request);
        webClient.waitForBackgroundJavaScript(10000);

        System.out.println("Current page: Articoli videogiochi - Multiplayer.it");

        // Current page:
        // Title=Articoli videogiochi - Multiplayer.it
        // URL=http://multiplayer.it/articoli/

        List<HtmlAnchor> anchors1 =  page.getAnchors();
        HtmlAnchor link2 = null;
        for(HtmlAnchor anchor: anchors1)
        {
             if(anchor.asText().indexOf("Dead Rising 3: Operation Broken Eagle") > -1 )
             {
                  link2 = anchor;
                  break;
             }
        }
        page = link2.click();

        System.out.println("Current page: Dead Rising 3: Operation Broken Eagle - Recensione - Xbox On...");

        // Current page:
        // Title=Dead Rising 3: Operation Broken Eagle - Recensione - Xbox On...
        // URL=http://multiplayer.it/recensioni/127745-dead-rising-3-operation-broken-eagle-una-delle-storie-di-los-perdidos.html


        webClient.waitForBackgroundJavaScript(10000);

        DomNodeList<DomElement> paras = page.getElementsByTagName("p");
        for (DomElement el : paras.toArray(new DomElement[paras.size()])) {
            System.out.println(el.asText());
        }
    }
publicstaticvoidmain(字符串…参数)
引发FailingHttpStatusCodeException,IOException{
final WebClient WebClient=新的WebClient(BrowserVersion.FIREFOX_17);
WebRequest=newwebrequest(
新网址(
"http://multiplayer.it/articoli/"));
webClient.getOptions().SetThroweExceptionOnScriptError(false);
setJavaScriptTimeout(10000);
webClient.getOptions().setJavaScriptEnabled(true);
setAjaxController(新的NicelyResynchronizingAjaxController());
webClient.getOptions().setTimeout(10000);
HtmlPage=webClient.getPage(请求);
webClient.waitForBackgroundJavaScript(10000);
System.out.println(“当前页面:Articoli videogiochi-Multiplayer.it”);
//当前页面:
//Title=Articoli videogiochi-Multiplayer.it
//网址=http://multiplayer.it/articoli/
List anchors1=page.getAnchors();
HtmlAnchor link2=null;
对于(HtmlAnchor锚:主播1)
{
if(anchor.asText().indexOf(“死上升3:断鹰行动”)>-1)
{
link2=锚;
打破
}
}
page=link2.单击();
System.out.println(“当前页面:死神崛起3:断鹰行动-更新-Xbox开启…”);
//当前页面:
//Title=死神复活3:断鹰行动-更新-Xbox开启。。。
//网址=http://multiplayer.it/recensioni/127745-dead-rising-3-operation-broken-eagle-una-delle-storie-di-los-perdidos.html
webClient.waitForBackgroundJavaScript(10000);
DomNodeList-paras=page.getElementsByTagName(“p”);
对于(DomeElement el:paras.toArray(新的DomeElement[paras.size()])){
System.out.println(el.asText());
}
}
在上面的代码中,它显示登录页上可用的所有
。以下是输出的屏幕截图:

在上面的代码块中,您可以循环浏览网页上的所有锚定标记,我选择一个特定的锚定链接来获取结果内容:

List<HtmlAnchor> anchors1 =  page.getAnchors();
            HtmlAnchor link2 = null;
            for(HtmlAnchor anchor: anchors1)
            {
                 if(anchor.asText().indexOf("Dead Rising 3: Operation Broken Eagle") > -1 )
                 {
                      link2 = anchor;
                      break;
                 }
            }
List-anchors1=page.getAnchors();
HtmlAnchor link2=null;
对于(HtmlAnchor锚:主播1)
{
if(anchor.asText().indexOf(“死上升3:断鹰行动”)>-1)
{
link2=锚;
打破
}
}
您可能希望使用正确的逻辑来解析页面上的所有动态链接并显示其内容

编辑:


您可以尝试通过Firefox插件生成这些动态脚本,并在以后根据需要对其进行自定义。

那么您想单击url并从“结果”页面中删除元素吗?是的!这正是我想要的。点击我列表中的一篇文章,我想在它的url中输入。我不知道你是否明白:)我需要把每个孩子都叫来。@PopoFibo你还在吗?是的,非常感谢,起草了一份回复:)ups对不起:)我在等Answare:)谢谢!太棒了Answare!!谢谢那么,它是如何与onClick方法一起工作的呢?看看我用onClick方法编辑的内容,我必须打开一个新的活动来显示新的内容吗?以上是一个独立的例子,它负责单击url并获取内容。我想您可能需要从
page=link2.click()尝试一下
Forwards(这是自动单击页面的地方)。我必须研究此方法,因为它看起来很复杂:(.例如..我已经无法理解是否必须创建另一个活动,其中显示每个页面的内容以及如何在单击时传递数据。我正在尝试启动应用程序,但似乎无法启动。嗯…android库是否也正确?