2

我想从这个 URL 获取数据:http://livingsocial.com/cities.atom . 每次我点击这个 URL 时,浏览器都会卡住。我试图通过 curl 直接击中它,file_get_contents()但结果是一样的。

这个 URL 发送一个巨大的 Xml,我必须从中获取和收集所需的信息并将其保存在数据库中。

请帮助我完成这项任务,或者至少告诉我如何获得这个 XML?

4

3 回答 3

1

一旦我遇到同样的问题..在chrome中打开这个URL的文件内容并在1或2秒后停止它..它将显示xml的结构..完成最后1或2个标签并享受..我在这里粘贴结构..

<?xml version="1.0"?>
  <feed xmlns:ls="http://livingsocial.com/ns/1.0" xmlns="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss" xml:lang="en-US">
  <title>LivingSocial Deals</title>
  <updated>2013-03-12T00:49:21-04:00</updated>
  <id>tag:livingsocial.com,2005:/cities.atom</id>
  <link rel="alternate" type="text/html" href="http://www.livingsocial.com/"/>
  <link rel="self" type="application/atom+xml" href="http://www.livingsocial.com/cities.atom"/>
    <entry>
      <id></id>
      <published></published>
      <updated></updated>
      <link type="text/html" href="http://www.livingsocial.com/cities/1759-sacramento-citywide/deals/620554-set-of-two-organic-yoga-leggings" rel="alternate"/>
      <title></title>
      <long_title></long_title>
      <deal_type></deal_type>
      <merchandise_type></merchandise_type>
      <market_id></market_id>
      <market_name></market_name>
      <georss:point></georss:point>
      <georss:featureTypeTag>city</georss:featureTypeTag>
      <country_code>US</country_code>
      <subtitle></subtitle>
      <offer_ends_at></offer_ends_at>
      <price></price>
      <value></value>
      <savings></savings>
      <orders_count></orders_count>
      <merchant_name></merchant_name>
      <image_url></image_url>
      <categories></categories>
      <sold_out></sold_out>
      <national></national>
      <description></description>
      <details></details>
      <content type="html"></content>
      <ls:merchant></ls:merchant>
      <author>
        <name></name>
      </author>
    </entry>
  </feed>
</xml>
于 2013-03-12T06:39:21.307 回答
0

我什至无法在我的浏览器上加载文件,所以我的猜测是它太大了,你应该尝试以某种方式限制你必须加载的数量(是否有参数可以让你只指定一个城市?)但是,如果这不是一个选项,这里的第一个示例有一个类,它应该大致完成您正在寻找的内容。只需确保传递 URL 而不是CURL请求的内容。

于 2013-03-11T18:52:01.673 回答
0

URLhttp://www.livingsocial.com/cities.atom很大(94 354 882 字节,大约 90 MB)并且需要时间来加载(这里是 33 秒)。

由于这是一个远程资源,您无法更改它。

但是,如果您将该提要存储到磁盘(缓存它),您可以减少将文件加载到 Simplexml 或 DOMDocument 中的时间。1.5 秒。

// Store URL to disk (takes ca. 33 seconds)
$url = 'http://www.livingsocial.com/cities.atom';
$out = 'cities.atom.xml';
$fh  = fopen($url, 'r');
$r   = file_put_contents($out, $fh);
fclose($fh);

如果这仍然太慢,您不仅需要缓存远程文件,还需要缓存解析。

于 2013-03-12T00:02:59.927 回答