dcap = dict(DesiredCapabilities.PHANTOMJS) dcap["phantomjs.page.settings.userAgent"] = \ ("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87") wd = webdriver.PhantomJS(desired_capabilities=dcap, service_args=['--ssl-protocol=tlsv1']) wd.set_window_size(1120, 550) wd.get("https://www.facebook.com/")
Показ дописів із міткою facebook. Показати всі дописи
Показ дописів із міткою facebook. Показати всі дописи
Python Selenium PhantomJS робота з Facebook
По замовчуванні PhantomJS на відріз відмовився працювати з Facebook, хоча webdriver.Firefox() працює прекрасно. Методом гугління, проб і помилок вияснилось, що проблема при роботі з SSL. Отже, робочий "сніпєтс":
loginza + django-avatars + facebook + vkontakte
Авторизуємось через loginza, і якщо facebook нам віддає ім'я і аватар юзернейма, зберігаємо у моделі користувачів.
Для Вконтактє ситуація аналогічна, лише Вконтактє віддає малюнок з розширенням, а Фейсбук без.
def loginza_auth_handler(sender, user, identity, **kwargs):
try:
#loginza_models.UserMap.objects.get(user=user, verified=True)
map = loginza_models.UserMap.objects.get(user=user)
data = json.loads(map.identity.data)
if data['provider'] == "http://www.facebook.com/":
system_user = User.objects.get(username=user)
if data['name']['first_name']:
system_user.first_name = data['name']['first_name']
if data['name']['last_name']:
system_user.last_name = data['name']['last_name']
if data['photo']:
try:
Avatar.objects.get(user=system_user)
except:
(filename, headers) = urllib.urlretrieve(data['photo'])
img_name = '%s.jpg' % os.path.basename(filename)
copy_path = os.path.join(settings.MEDIA_ROOT, settings.AVATAR_STORAGE_DIR, system_user.username, img_name)
copy_dir = os.path.join(settings.MEDIA_ROOT, settings.AVATAR_STORAGE_DIR, system_user.username)
if not os.path.isdir(copy_path):
os.makedirs(copy_dir)
shutil.copy2(filename, copy_path)
path_ava = os.path.join(settings.AVATAR_STORAGE_DIR, system_user.username, img_name)
avatar = Avatar(
user = system_user,
primary = True,
avatar = path_ava,
)
avatar.save()
system_user.save()
auth.login(sender, user)
Для Вконтактє ситуація аналогічна, лише Вконтактє віддає малюнок з розширенням, а Фейсбук без.
Підписатися на:
Коментарі (Atom)