2017-07-09 4 views
0

2日前この目的コードは、意図したとおりに動作するウェブサイトからテキストを抽出するために作成しました。今、Android用にこれを実装する方法がわかりません。それは、XPath TFHppleのようなAndroid XPathのHTML解析(私は10行のObj-C実装が動作していますが、翻訳できません)

  • にすることはできません、

    • のAndroidと本当に奇妙ないくつかのXPathコード皆ポストはHTMLファイルと互換性がないこと(のみ標準XMLが受け入れる)(HTMLを扱うことができます)
    • JSoup私は今まさにサークルで歩いています。

    基本的には、特定のURLのhtmlファイルから//h2/aの要素を取得する必要があります。 私が書いた私のobj-cの実装を見てください。それは文字通り10行の作業コードですが、Androidで同じことをする方法を理解することはできません。

    -(void)loadTutorials:(NSString*)startURLS { 
    
    NSURL *tutorialsUrl = [NSURL URLWithString:startURLS]; 
    NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl]; 
    TFHpple *tutorialsParser = [TFHpple hppleWithHTMLData:tutorialsHtmlData]; 
    
    NSString *tutorialsXpathQueryString = @"//h2/a"; 
    NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString]; 
    
    NSString *podcastTitles[99]; 
    
    int jjj=0; 
    for (NSString *string in tutorialsNodes) { 
        podcastTitles[jjj]=[[[tutorialsNodes[jjj] firstChild] content] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
    
        NSLog(@"%@",podcastTitles[jjj]); //WORKING PERFECTLY FINE 
        jjj++; 
        } 
    } 
    
  • 答えて

    0

    が働いて、それを手に入れた、鍵がたXPathFactoryに固執しましたが、それをHTMLCleaner -cleaned HTMLを供給する。残念ながら、私は軌道に乗っているので、今日は信用できませんが、うまくいけば私はそれをまたいでつまずくでしょう。

    これらの行はどれくらい必要なのですか?私はこのコードを削除しませんが、このブロックは現在私のために働いています。

    HtmlCleaner cleaner = new HtmlCleaner(); 
           CleanerProperties props = cleaner.getProperties(); 
           props.setAllowHtmlInsideAttributes(true); 
           props.setAllowMultiWordAttributes(true); 
           props.setRecognizeUnicodeChars(true); 
           props.setOmitComments(true); 
    
    
           TagNode tagNode = new HtmlCleaner().clean(
             websiteContent); 
           org.w3c.dom.Document doc = new DomSerializer(
             new CleanerProperties()).createDOM(tagNode); 
    
           XPath xpath = XPathFactory.newInstance().newXPath(); 
           NodeList titleNodes = (NodeList) xpath.evaluate("//h2/a", 
             doc, XPathConstants.NODESET); 
           System.out.println("iii"+titleNodes); 
    
           for(int i=0; i<titleNodes.getLength();i++){ 
            System.out.println("t t t"+titleNodes.item(i).getTextContent()); //WORKING 
           } 
    
    関連する問題