Как я могу получить родителей города, как написано на его странице? - PullRequest
0 голосов
/ 04 декабря 2011

Используя API Graph, я могу получить страницу для определенного местоположения, например, такой город:

https://graph.facebook.com/112604772085346

Но при посещении самой страницы

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

Существует иерархия, которая гласит, что этот город является частью района "Тель-Авив", который является частью "Израиля".

Как я могу получить эту информацию, используя Graph API? Любой другой известный способ также хорош, за исключением «хранить список всех городов мира в вашем приложении».

Ответы [ 2 ]

0 голосов
/ 06 декабря 2011

Завершено с использованием html-соскоба, например webarto .(награждая его правильным ответом)

Моя версия на 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>]
0 голосов
/ 04 декабря 2011

Если ничего не помогает ...

<?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>

Затем вы можете извлечь ссылки и названия городов / штатов ...

...