Ответы пользователя по тегу Парсинг
  • Какой парсер использовать?

    erge
    @erge
    Примус починяю
    Все готовые решения в 99.(9)% платные.
    А такие:
    Нужно переносить контент, в идеале с автокоррекцией по заданному шаблону.

    Это скорее всего только заказные, т.е. пишутся под ваш сайт / магазин / движок.
    Тем более какой у вас движок, вы не объявили...

    готовых парсеров полно, ищутся через любой поисковик.
    например:
    Q-Parser
    ParserOK
    Datacol
    Сотбит: Парсер контента (вроде какую-то интеграцию умеет с 1C-Битрикс)

    на ютюбе полно роликов по настройке (поисковый запрос: настройка парсера)
    https://www.youtube.com/watch?v=IgkJNc-3Fxg&list=P...
    https://www.youtube.com/watch?v=AhTeWQzze_A
    https://www.youtube.com/watch?v=L_kw76nK27U

    и т.п. и т.д.

    большинство умеет парсить в csv / excel , открываете спарсенный файл в excel вводите формулу, растягиваете на все, сохраняете, импортируете (загружаете) на свой сайт.
    Ответ написан
    Комментировать
  • Почему парсер выдаёт 403 даже после указания Cookie и User-Agent?

    erge
    @erge
    Примус починяю
    нужно больше полей в Header
    вставил все что отправляет Chrome и появился результат, см:

    import requests
    
    url = 'https://www.artstation.com/users/kuvshinov_ilya'
    json_url = 'https://www.artstation.com/users/kuvshinov_ilya/projects.json?page=1'
    header = {
      'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
      'accept-encoding':'gzip, deflate, br',
      'accept-language':'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
      'cache-control':'no-cache',
      'dnt': '1',
      'pragma': 'no-cache',
      'sec-fetch-mode': 'navigate',
      'sec-fetch-site': 'none',
      'sec-fetch-user': '?1',
      'upgrade-insecure-requests': '1',
      'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}
    
    session = requests.Session()
    session.headers = header
    r = session.get(url)
    if r.status_code == 200:
      json_r = session.get(json_url)
      if json_r.status_code == 200:
        print(json_r.text)
      else:
        print(json_r.status_code)
    Ответ написан
    1 комментарий
  • Извлечение данных с веб страницы, как?

    erge
    @erge
    Примус починяю
    посмотрите ролики:
    https://www.youtube.com/results?search_query=chrom...

    переходите в хроме режим отладки нажатием F12
    в режиме отладки нажимаете Ctrl+shift+C , далее наводите указатель мыши на текст вопроса на странице и кликаете, справа в отладке откроется исходник с указанным элементом
    <div class="question__text js-question-text" itemprop="text description">
    ....


    чтобы получить текст этого элемента , выбираете его селектором по атрибуту class и берете содержимое
    выполнив в консоли окна отладки код:
    let text = document.querySelector(".question__text.js-question-text").textContent;
    console.log(text);


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

    let obj = {
        "filename": "file.txt",
        "url": 'text/plain;charset=UTF-8,' + encodeURIComponent(text),
        "conflictAction": "prompt",
        "saveAs": true
      };
    chrome.downloads.download(obj);


    См. chrome.downloads

    Upd:
    Вот вариант сохранения текста элемента из консоли браузера:
    let text = document.querySelector(".question__text.js-question-text").textContent;
    let a = document.createElement("a");
    a.setAttribute("href", "data:text/plane;base64,"+window.btoa(unescape(encodeURIComponent(text))));
    a.setAttribute("download","YourFileName.txt");
    a.click();


    Upd2:
    Кроме того, скрипт выше можно оформить в виде букмарклета

    прямо как есть:
    javascript:a = document.createElement("a"); a.setAttribute("href", "data:text/plane;base64,"+window.btoa(unescape(encodeURIComponent(document.querySelector(".question__text.js-question-text").textContent)))); a.setAttribute("download","YourFileName.txt");a.click();


    или обрамив в функцию:
    javascript:(function(){a = document.createElement("a"); a.setAttribute("href", "data:text/plane;base64,"+window.btoa(unescape(encodeURIComponent(document.querySelector(".question__text.js-question-text").textContent)))); a.setAttribute("download","YourFileName.txt");a.click();})()


    таким образом кликая на ссылку-букмарклет в избранном будет вызываться данный скрипт и сохраняться текст.
    Ответ написан
    2 комментария