我怎样才能让城市的父母喜欢在页面上写下来?

时间:2011-12-04 15:07:42

标签: facebook facebook-graph-api geolocation

使用Graph API我可以获得特定位置的页面,例如像这样的城市:

https://graph.facebook.com/112604772085346

但是在访问实际页面时,

https://www.facebook.com/pages/Ramat-Gan/112604772085346

有一个层次结构表明这个城市是“特拉维夫”区的一部分,该区是“以色列”的一部分。

如何使用Graph API获取此信息? 除了“在您的应用程序中存储世界上所有城市的列表”之外,任何其他已知方式也都很好。

2 个答案:

答案 0 :(得分:0)

如果一切都失败了......

<?php

class DOM
{
    public static function innerHTML($element) 
    {
        $tmp = new DOMDocument(); 
        $tmp->appendChild($tmp->importNode($element, true)); 
        return trim($tmp->saveHTML()); 
    }
}

function curl($url)
{
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
        $data = curl_exec($curl);
        curl_close($curl);
        return $data; 
}

$html = curl('http://www.facebook.com/pages/Ramat-Gan/112604772085346?_fb_noscript=1');

$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
$x = $xpath->query('//div[@id="places_directory_breadcrumb_header"]')->item(0);
echo DOM::innerHTML($x);

?>

结果...

<div id="places_directory_breadcrumb_header" data-referrer="places_directory_breadcrumb_header">
<div class="fsm fwn fcg">
<a href="http://www.facebook.com/directory/places/">Places</a><i class="mhs img sp_dob1w7 sx_c6f550"></i>
<a href="http://www.facebook.com/pages/Israel/108099562543414">Israel</a><i class="mhs img sp_dob1w7 sx_c6f550"></i>
<a href="http://www.facebook.com/pages/Tel-Aviv-Israel/106371992735156">Tel Aviv</a><i class="mhs img sp_dob1w7 sx_c6f550"></i>
<a href="http://www.facebook.com/pages/Ramat-Gan/112604772085346">Ramat Gan</a>
</div>
</div>

然后,您可以提取链接和城市/州名称......

答案 1 :(得分:0)

使用像webarto建议的html抓取结束。 (授予他正确答案)

我的版本是Python:

import urllib2
from BeautifulSoup import BeautifulSoup

def scrape_page(page_name):
    page = urllib2.urlopen('http://www.facebook.com/pages/%s' % (page_name,))
    soup = BeautifulSoup(page)
    return soup.find(id='places_directory_breadcrumb_header').findAll('a')

结果如下:

>>> scrape_page("Ramat-Gan/112604772085346")

[<a href="http://www.facebook.com/directory/places/">Places</a>,
 <a href="http://www.facebook.com/pages/Israel/108099562543414">Israel</a>,
 <a href="http://www.facebook.com/pages/Tel-Aviv-Israel/106371992735156">Tel Aviv</a>,
 <a href="http://www.facebook.com/pages/Ramat-Gan/112604772085346">Ramat Gan</a>]