Тема: Як позичити контент з сайту 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;
        }
    }
}

http://не-дійсний-домен/k3m9p/c8fa0840f2.png

На картинці видно відносний шлях до сторінки з картинкою  - /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: ">

Але на скріншоті видно, що програма не знайшла саме такого посилання.

Я от припускаю, що той сайт перевіряє, чи з браузера зайшли на нього, чи не з браузера, і на основі цьої інфи видає відповідні дані.
А ви як гадаєте?

Подякували: 0xDADA11C71

2

Re: Як позичити контент з сайту Pinterest?

Тільки що надибав, що в них є API. І от таке посилання повертає жисон, котрий містить посилання на картинки. Треба тільки замінити 237x та 736x, аби картинки були в кращій якості
https://api.pinterest.com/v3/pidgets/bo … irls/pins/

3

Re: Як позичити контент з сайту Pinterest?

Щойно завантажив все wget’ом. wget -E -H -k -K -p https://www.pinterest.com/pin/467952217508186367/ Тож не перевіряє.

Подякували: Djalin1

4

Re: Як позичити контент з сайту Pinterest?

Invader написав:

Щойно завантажив все wget’ом. wget -E -H -k -K -p https://www.pinterest.com/pin/467952217508186367/ Тож не перевіряє.

а в мене якась помилка вилізла

SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc
--2015-09-07 23:07:16--  https://www.pinterest.com/pin/467952217508186367/
Визначення ?мен? www.pinterest.com... 95.100.72.170
Connecting to www.pinterest.com|95.100.72.170|:443... п?д'єднано.
ERROR: cannot verify www.pinterest.com's certificate, issued by `/C=NL/L=Amsterdam/O=Verizon Enterpr
ise Solutions/OU=Cybertrust/CN=Verizon Akamai SureServer CA G14-SHA2':
  Unable to locally verify the issuer's authority.
To connect to www.pinterest.com insecurely, use `--no-check-certificate'.
Не можу встановити SSL-з'єднання.

5

Re: Як позичити контент з сайту Pinterest?

А чому ви не можете зробити те, що вам кажуть?

--no-check-certificate

RTFM так би мовити

Подякували: Djalin1

6

Re: Як позичити контент з сайту Pinterest?

0xDADA11C7 написав:

А чому ви не можете зробити те, що вам кажуть?

--no-check-certificate

RTFM так би мовити

тому що ліньки

7

Re: Як позичити контент з сайту Pinterest?

А ще тому що не читав.
Ну я перевірив, і дійсно, wget завантажив все вірно. Але чого тоді мій сі шарп не знайшов тої картинки? Одже є якась різниця в запиті wget і WebClient, очевидно.
Але то все не має вже сенсу, адже я можу робити API запит і отримувати JSON з усіма даними

Подякували: 0xDADA11C71

8

Re: Як позичити контент з сайту Pinterest?

ви розумієте що таке wget ? яке його призначення?

9

Re: Як позичити контент з сайту Pinterest?

Djalin написав:

ви розумієте що таке wget ? яке його призначення?

Прихований текст

Тут питання я задаю, якщо не можете нічого розумного сказати, то геть з моєї теми.

10 Востаннє редагувалося Djalin (08.09.2015 14:59:50)

Re: Як позичити контент з сайту Pinterest?

Павло Зібров написав:
Djalin написав:

ви розумієте що таке wget ? яке його призначення?

Прихований текст

Тут питання я задаю, якщо не можете нічого розумного сказати, то геть з моєї теми.

Прихований текст

Ну не розумієте то й не розумієте, буває

так от ве-гету цілком пофігу на запити, якщо вони не вказані явно - він закачує файли - бо для цього і призначений

А питання задають тут усі, це не ваш форум  :D