【问题标题】:InstaPaper API - /api/1/bookmarks/get_textInstaPaper API - /api/1/bookmarks/get_text
【发布时间】:2012-08-27 23:45:48
【问题描述】:

我正在使用 InstaPaper API

我正在使用这个字符串来拉取文章的内容。

$Bookmark_Text = $connection->getBookmarkText($Bookmark['bookmark_id']);

不幸的是,它拉动了整个 html,基本上把 HTML 结构放在了我的 HTML 中。

示例。

<html>
<head></head>
<body>
    <html>
    <head>Instapaper Title</head>
    <body>InstaPaper Article Content</body>
    </html>
</body>
</html>

关于如何获取“Instapaper 文章内容”的任何想法

谢谢!

【问题讨论】:

  • 您使用什么语言调用 API? PHP?
  • 是的 PHP。将添加到标签中。

标签: php api instapaper


【解决方案1】:

这是一些仅提取文章并删除 Instapaper 的东西(例如顶部和底部栏)的 JS 代码。

html.replace(/^[\s\S]*&lt;div id="story"&gt;|&lt;\/div&gt;[^&lt;]*&lt;div class="bar bottom"&gt;[\s\S]*$/gim, '');

请注意,它可能会随着 Instapaper 的 HTML 输出的变化而变化。

【讨论】:

    【解决方案2】:

    使用解析器提取&lt;body&gt; 的内容。 PHP has some built in,但有 others 可能更容易使用。

    如果$Bookmark_Text 是有效的 HTML 文档,则应该这样做。

    $dom = new DOMDocument();
    $dom->loadHTML($Bookmark_Text);
    $body = $dom->getElementsByTagName('body')->item(0);
    $content = $body->ownerDocument->saveHTML($body);
    

    【讨论】:

    • 这些似乎都无法拉动体内的一切。
    • 您确定示例中的 HTML 正是 API 返回的内容吗?我能够使用DOMDocument 创建一个示例,但是因为&lt;head&gt; 中包含文本,所以将其解析为&lt;p&gt; 并放入正文中。
    • 将我的代码添加到答案中。如果返回的文档不是有效的 HTML,也许你唯一的选择是尝试正则表达式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多