Загрузка изображений, связанных с сообщением группы facebook

#excel #vba #selenium

#excel #vba #селен

Вопрос:

Я создал код с использованием selenium для входа в Facebook, и я пытаюсь получить все ссылки на изображения для определенного сообщения в группе

 Sub Facebook()
    Dim bot As New WebDriver
    With bot
        .AddArgument "--disable-notifications"
        .Start "Chrome", "https://www.facebook.com"
        .Get "/"
        .FindElementById("email").SendKeys "email"
        .FindElementById("pass").SendKeys "pass"
        .FindElementById("u_0_b").Click
        .Wait 5000
        .Get "https://www.facebook.com/permalink.php?story_fbid=2776252612695761amp;id=2341556939498666"
        '.FindElementByClass("l9j0dhe7").Click
        .Wait 5000
        
    End With
    Stop
End Sub
  

Я пытался найти какую-либо подсказку, но я потерялся и не могу найти отправную точку для получения ссылок.
Чтобы упростить проблему, это сообщение в группе, и в сообщении содержится около 66 изображений, которые мне нужны, чтобы привести ссылки на эти изображения.

Комментарии:

1. Вы уверены, что локаторы стабильны? Я знаю, что FB использует динамические локаторы.

2. Я не уверен. Я прошу убедиться, возможно ли это, или я должен избавиться от этой идеи.

3. Я опубликую обходной путь в качестве ответа

Ответ №1:

Вместо перехода на ту страницу, где находится изображение, вы можете перейти прямо к первой фотографии из альбома. (Я не буду публиковать URL-адрес, потому что он слишком длинный)

Оттуда выполните следующие действия:

  1. Получите ссылку из этого локатора:

    WebElement image = driver.findElement(By.xpath(«// div[@data-pagelet=’MediaViewerPhoto’]/div/img«));

    Строка link = image.getAttribute(«src»);

  2. Перейдите к следующему изображению, нажав на кнопку Далее:

    //div[@aria-label='Next photo' and @role='button']

и продолжайте очищать ссылку.

Вы можете добавить свой код в цикл while и делать это до тех пор, пока не появится кнопка next (когда вы дойдете до последнего изображения, кнопка будет недоступна). Кроме того, добавьте ожидание перед переходом к следующему изображению, чтобы убедиться, что оно правильно загружено.