菜鸟教程小白 发表于 2022-12-13 07:50:06

html - 在 iOS 上将网页剥离为仅文本( Objective-C )


                                            <p><p>我在这里的主要目标是实现像 Readability 或 Safari 的 Reader 服务这样的效果,将网页的主要内容转换为文本。我实际上不想显示任何图像,只是获取所有网页的重要文本。我目前正在使用一些相当长的自建代码来解析网页的 s 以找出标题可能是什么样的,我也在解析我希望包含大部分内容的 </p><p>s页面的内容。</p>

<pre><code>-(void)interpretAndDisplay {
NSURL *URL = ;
NSData *data = ;
NSString *html = ];

//Getting the H1s
NSMutableArray *h1Full = [ init];
h1Full = ;

if ( &gt; 0) {
    NSMutableArray *h1Content = [ init];
    h1Content = ] andString:@&#34;&lt;/h1&gt;&#34; andText:html];
    NSMutableArray *h1Sanitize = [ init];
    h1Sanitize = ;

    if ( &gt; 0) {
      NSString *finalTitle = ;

      for (int i = 0; i &lt; ; i++) {
            NSString *toRemove = ];
            finalTitle = ;
            finalTitle = ;

      }

      finalTitle = ;

      ;
    }

}

//Now for the body!
NSMutableArray *pTag = [ init];
pTag = ;
if ( &gt; 0) {
    NSMutableArray *pContent = [ init];
    pContent = ] andString:@&#34;&lt;/p&gt;&#34; andText:html];

    NSMutableArray *pSanitize = [ init];
    pSanitize = ;

    if ( &gt; 0) {

      for (int i = 0; i &lt; ; i++) {
            NSString *pToEdit = ;

            for (int i = 0; i &lt; ; i++) {
                NSString *toRemove = ];
                pToEdit = ;
            }

            ;
      }

      for (int i = 0; i &lt; ; i++) {
            NSString *pToEdit = ;
            pToEdit = ;
            ;
      }

      NSString *finalBody = @&#34;&#34;;

      for (int i = 0; i &lt; ; i++) {

            if () {
                finalBody = ];
            }

            else {
                finalBody = ];
            }
      }

      finalBody = ;

      ;
    }

}
}
</code></pre>

<p>上面的代码很好地提取了所有元素并使用我创建的方法对其进行了清理,但问题是仅分析 P 标签有时完全无法简化内容,分析所有可能的内容标签可能会弄乱内容的顺序和布局。</p>

<p>有没有更好的方法或一些框架可以将所有文本转换成漂亮的字符串?</p>

<p><strong>编辑</strong></p>

<p>四处搜索,我发现了一个可以极其轻松地提取文本的 Boilerpipe 项目 (<a href="https://github.com/k-bx/boilerpipe/wiki/QuickStart" rel="noreferrer noopener nofollow">https://github.com/k-bx/boilerpipe/wiki/QuickStart</a>)。它看起来就像这样简单:<code>String text= ArticleExtractor.INSTANCE.getText(url);</code></p>

<p>我可以在 Objective C 上做到这一点吗?</p>

<p><strong>编辑 2</strong></p>

<p>似乎有一个boilerpipe API,但它的请求有限。我主要是在寻找用户端的解决方案。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在我看来,Reggie 并不是最宽容的方法。</p>

<p>我会尝试找到一个现有的开源(即 <a href="https://github.com/Kerrick/readability-js" rel="noreferrer noopener nofollow">https://github.com/Kerrick/readability-js</a> )并使用 <a href="http://nshipster.com/wkwebkit/" rel="noreferrer noopener nofollow">WebKit</a>加载后将 JS 注入(inject)网页。 </p>

<p>之后你可以注入(inject)另一个JS,提取处理后的内容(使用<a href="https://github.com/Kerrick/readability-js/blob/develop/readability.js#L113" rel="noreferrer noopener nofollow">appropriate class from the source</a>)</p>

<p>然后,使用 <a href="http://nshipster.com/javascriptcore/" rel="noreferrer noopener nofollow">JavaScriptCore</a>你可以将 <code>div</code> 的内容传递给 Objective-C(JS 提供了很多方法)</p></p>
                                   
                                                <p style="font-size: 20px;">关于html - 在 iOS 上将网页剥离为仅文本( Objective-C ),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/30677385/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/30677385/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: html - 在 iOS 上将网页剥离为仅文本( Objective-C )