【问题标题】:PHP CURL - scraping xml data that is returned as HTML [duplicate]PHP CURL - 抓取以 HTML 形式返回的 xml 数据 [重复]
【发布时间】:2011-09-18 18:53:23
【问题描述】:

可能重复:
Best XML Parser for PHP

我是 PHP 和 cURL 的新手,所以请给出简单的步骤! :)

我正在尝试从将 XML 数据返回为 HTML 的网站中抓取数据。

cURL 将响应检索为“5814 3300”而不是源

<?xml version="1.0" encoding="iso-8859-1"?><app><info><bookID>58</bookID><firstbook><t>14 </t><status>3</status></firstbook><nextbook><t>30</t><status>0</status></nextbook></info></app>

我需要的(所以我可以对结果进行 preg_match)

如何将“5814 3300”输出转换为所需的 XML? 谢谢!

请注意:这个问题是我在困惑的状态下提出的。 cURL 确实会输出源代码。

【问题讨论】:

  • 你能告诉我为什么我不能使用 cURL 来抓取 XML 吗?我对此的理解不是很深 - 谢谢!
  • 可以为此使用 cURL。但你不应该。除非在您的主机的 php.ini 上禁用了 allow_url_fopen,否则上面提到的任何 XML/HTML 解析器都可以直接加载 URI,并且它们对标记的控制比任何正则表达式都多,因为 XML/HTML 解析器实际上理解标记规则,而 Regex 必须首先学习这些规则(这很乏味)。
  • 我明白了。这就是为什么正则表达式根本没有提取任何东西的原因。你能给我指出一个非常简单的抓取 XML 的教程吗?我四处搜索并看到了 XML 抓取教程,但它们使用“foreach”代码,而且它们似乎过于复杂。最终,我想要做的只是提取 14 标记之间的值
  • 我给出的答案中有很多例子。见stackoverflow.com/search?q=user%3A208809+dom+html
  • 我去看看。感谢您的时间和帮助!

标签: php html xml curl screen-scraping


【解决方案1】:

我敢打赌,如果您查看实际源代码(而不是屏幕上呈现的内容),您会看到完整的 XML 表示。

【讨论】:

  • 你是对的;我糊涂了。抱歉耽误您的时间!
  • 当您找到最能解决您的问题的答案时,不要忘记接受答案。 :)
【解决方案2】:

您是否将该 XML 输出到您的浏览器?如果您要输出 HTML 内容类型,浏览器将跳过所有这些未知标签并简单地显示它们的内容。如果您查看页面源代码,您很可能会看到实际的 XML。

【讨论】:

  • 你是对的;我糊涂了。抱歉耽误您的时间!
猜你喜欢
  • 2010-11-19
  • 2013-06-27
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 2012-05-28
  • 1970-01-01
相关资源
最近更新 更多