【问题标题】:How to scrape the first paragraph from a wikipedia page?如何从维基百科页面中抓取第一段?
【发布时间】:2010-05-10 01:33:39
【问题描述】:

假设我想获取this wikipedia page 中的第一段。如何使用 XPath 或 DOM & PHP 或类似的东西获取标题和内容框之间的主要文本?

有没有 php 库可以解决这个问题?我不想使用api,因为它有点复杂。

注意:我只需要在我的页面下添加一个小部件,以显示来自维基百科的相关信息。

【问题讨论】:

  • 您可能需要查看 wikimedia API

标签: php dom xpath web-crawler


【解决方案1】:

使用以下 XPath 表达式:

/*/h:body//h:h1
  |
   /*/h:body//h:h1/following::node()
      [count(. | //h:table[@id='toc']
                  /preceding::node()
             )
      =
       count(//h:table[@id='toc']
                  /preceding::node()
             )
       ]

这里前缀 h: 绑定到 XHTML 命名空间 ("http://www.w3.org/1999/xhtml")。

这种转换表明真正产生了想要的结果

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:h="http://www.w3.org/1999/xhtml"
 >
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
  <xsl:copy-of select=
  "/*/h:body//h:h1
  |
   /*/h:body//h:h1/following::node()
      [count(. | //h:table[@id='toc']
                  /preceding::node()
             )
      =
       count(//h:table[@id='toc']
                  /preceding::node()
             )
       ]
  "/>
 </xsl:template>
</xsl:stylesheet>

在维基百科文章的XHTML文档上运行时(您还需要为该文档定义两个实体&amp;nbsp;&amp;reg;),就会产生想要的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2019-05-24
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    相关资源
    最近更新 更多