Кажется, я понял, в чем ваша проблема. Инспектор веб-браузера отображает HTML на странице профиля TikTok. Однако он генерируется только с помощью JavaScript после загрузки страницы. Если мы загружаем контент через http.get()
, мы получаем необработанный HTML до того, как JavaScript сможет вносить какие-либо изменения.
- Напишите
http.get(),
перед своим URL-адресом или щелкните правой кнопкой мыши веб-сайт и выберите Просмотреть исходный код страницы . Теперь HTML будет отображаться так же, как и ваше приложение. - Найдите
avatar-wrapper round
. Вы не сможете его найти, потому что тег с изображения профиля здесь еще не существует. - К счастью, URL-адрес изображения профиля уже включен в другие места. Найдите
<meta property="og:image" content="
. Вы найдете только одно обращение, и после попадания сразу начинается URL-адрес изображения профиля.
Поэтому, на мой взгляд, самый простой способ получить URL:
- скачать HTML.
- удалить весь текст до
<meta property="og:image" content="
. - все следующие символы до следующего
"
- это URL-адрес, который мы ищем.
Здесь я вставил свой код, который у меня отлично сработал:
Future<String> getProfileImageUrl(String username) async {
// Download the content of the site
http.Response response = await http.get("https://www.tiktok.com/@$username");
String html = response.body;
// The html contains the following string exactly one time.
// After this specific string the url of the profile picture starts.
String needle = '<meta property="og:image" content="';
int index = html.indexOf(needle);
// The result of indexOf() equals -1 if the needle didn't occurred in the html.
// In that case the received username may be invalid.
if (index == -1)
return null;
// Remove all characters up to the start of the text snippet that we want.
html = html.substring(html.indexOf(needle) + needle.length);
// return all chars until the first occurrence of '"'
return html.substring(0, html.indexOf('"'));
}
Надеюсь, что смогу помочь вам с объяснением.
Редактировать 1: Общий подход
- просмотреть страницу источник для просмотра HTML страницы
- поиск нужной подстроки.
- Выберите предыдущие 10-15 символов и посмотрите, как часто эта строка встречается раньше.
- Если это происходит более одного раза, вы должны часто звонить
html = html.substring(html.indexOf(needle) + needle.length);
, соответственно, часто. - перезагрузите страницу и проверьте, работает ли она по-прежнему.
- теперь вы нашли свою игольную нить.