使用Graph API我可以获得特定位置的页面,例如像这样的城市:
https://graph.facebook.com/112604772085346
但是在访问实际页面时,
https://www.facebook.com/pages/Ramat-Gan/112604772085346
有一个层次结构表明这个城市是“特拉维夫”区的一部分,该区是“以色列”的一部分。
如何使用Graph API获取此信息? 除了“在您的应用程序中存储世界上所有城市的列表”之外,任何其他已知方式也都很好。
答案 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>]