Próbowałem od kilku dni (bezskutecznie) zeskanować miasta z około 500 adresów URL Facebooka. Jednak Facebook przetwarza swoje dane w bardzo dziwny sposób i nie mogę zrozumieć, co dzieje się pod maską, aby zrozumieć, co muszę zrobić.Skrobanie danych z Facebooka za pomocą Pythona
Zasadniczo problem polega na tym, że Facebook wyświetla bardzo różne ilości danych w zależności od tego, kto jest zalogowany i jakie są ustawienia prywatności konta. Na przykład, spróbuj otworzyć trzy poniższe linki, zarówno w przeglądarce, gdzie jesteś zalogowany na Facebooku, a jeden, gdzie nie są:
- http://www.facebook.com/100004210542493
- http://www.facebook.com/100000802680038
- http://www.facebook.com/100001200731989
jako widać, Facebook ładuje dane w obu przypadkach dla pierwszego linku, ale pobiera tylko dane dla drugiego linku, jeśli jesteś zalogowany (na DOWOLNE konto). Trzecie łącze wyświetla miasto po zalogowaniu, ale wyświetla tylko inne informacje, gdy nie jesteś zalogowany.
Powodem, dla którego jest to bardzo problematyczne (i związane z Pythonem) jest to, że próbując zeskrobać stronę za pomocą Beautiful Soup lub Mechanize, nie mogę wymyślić, jak sprawić, aby program "udawał", że jestem zalogowany na konto . Oznacza to, że mogę łatwo pobrać dane z pierwszego typu linku (z którego jest mniej niż 10), ale nie mogę uzyskać miasta z drugiego lub trzeciego typu. Do tej pory próbowałem wielu rozwiązań z niewielkim sukcesem.
Oto niektóre przykładowy kod, który działa prawidłowo dla pierwszego typu, ale nie dla innych typów:
import mechanize
import re
import csv
user_info = []
fb_url = 'http://www.facebook.com/100004210542493'
br = mechanize.Browser()
br.set_handle_robots(False)
br.open(fb_url)
all_html = br.response().get_data()
print all_html
city = re.search('fsl fwb fcb">(.+?)</a></div><div class="aboutSubtitle fsm fwn fcg', all_html).group(1)
user_info = [fb_url, city]
print user_info
Mam też wersję, która używa Piękne zupy. Jeśli ktoś ma jakieś pomysły na obejście tego, byłbym bardzo wdzięczny. Dziękuję Ci!
Powodzenia? Próbowałem też rzeczy, ale nie udało mi się. – xxbinxx