Тема: Як позичити контент з сайту Pinterest?
Добридень. Захтів зробити собі тематичну групу в одній соціальній мережі. І цю групу потрібно наповнювати картинками. На pinterest є купа дошок на потрібну мені тематику, але просто скачати всі картинки звідти неможливо без використання сторонніх засобів. (звісно, можна це все вручну зробити, але ж я програміст)
Поки що я спробував написати програмку, котра завантажує html-код сторінки, парсить її для того, щоб отримати посилання на картинку, але це, чомусь, не спрацювало. Завантажуванна інфа взагалі не містить посилання саме на потрібну картинку.
От нехай буде ця дошка, наприклад
https://www.pinterest.com/Monokumagirl/anime-girls/
А ось код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Text.RegularExpressions;
using System.Net;
namespace imageDownloaderConsole
{
class Program
{
public Program()
{
List<string> pins = ParseString(new WebClient().DownloadString("https://www.pinterest.com/Monokumagirl/anime-girls/")); //завантажуємо сторінку дошки і передаємо результат в метод, котрий дістане посилання на сторінку з картинкою
foreach(string pin in pins)
{
using (var client = new WebClient()) // тут я завантажую сторінку з картинкою
{
string str = client.DownloadString("https://www.pinterest.com" + pin);
Regex r = new Regex("<img src.+\"");
MatchCollection matches = r.Matches(str);
foreach (Match m in matches)
Console.WriteLine(m.Value); // а тут я просто виводжу усі картинки на сторінці, де має бути посилання на саму картинку
}
break;
}
Console.ReadLine();
}
static void Main(string[] args)
{
new Program();
}
List<string> ParseString(string str) // дістаємо посилання на сторінки з картинками
{
List<string> urls = new List<string>();
Regex r = new Regex("(/pin/\\d+)/(?=\")");
MatchCollection matches = r.Matches(str);
foreach(Match m in matches)
{
if (!urls.Contains(m.Value))
urls.Add(m.Value);
}
Console.WriteLine("count: " + urls.Count);
Console.WriteLine("first: " + urls.First());
return urls;
}
}
}
На картинці видно відносний шлях до сторінки з картинкою - /pin/467952217508186367/
тобто повне посилання виглядає от так https://www.pinterest.com/pin/467952217508186367/
Якщо перейти по цьому посиланню, то ми побачимо картинку, і от її url мені і потрібно дістати. Якщо проінспектувати елемент в браузері, то можна побачити, що тег і посилання на цю картинку мають такий вигляд
<img src="https://s-media-cache-ak0.pinimg.com/736x/b3/49/f1/b349f1987f3f8997cb1b1a15d9f57094.jpg" class="pinImage" data-load-state="pending" alt="Reminds me of KoukovKaga from Golden Time. Sweet anime, 8/10 hands down -RV: ">
Але на скріншоті видно, що програма не знайшла саме такого посилання.
Я от припускаю, що той сайт перевіряє, чи з браузера зайшли на нього, чи не з браузера, і на основі цьої інфи видає відповідні дані.
А ви як гадаєте?