GithubHelp home page GithubHelp logo

scrapuseren / ru-scrapy-python Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bulatbulat48/ru-scrapy-python

0.0 1.0 0.0 47 KB

В этом репозитории находится полезная информация, собранная участниками чата @scrapy_python

ru-scrapy-python's Introduction

В этом репозитории находится полезная информация, собранная участниками чата.

С чего начать?

Как ограничить количество реквестов?

  • CLOSESPIDER_PAGECOUNT = 10

Как спарсить JS?

  • ставится Splash(удобно в Docker) и плагин scrapy_splash
  • смотреть откуда идут данные в Chrome -> devtools -> network -> XHR
  • JS to Python

Лучшие практики

  • Использовать css селекторы чтобы избежать пробелов в названии при использовании @class в xpath, альтернатива "contains(@class, 'someclass')" выглядит сложнее.
  • Использовать xpath для поиска сложных значений, например в таблицах
  • Использовать inline-requests для синхронных запросов в функции
  • Посмотреть мобильную версию

Популярные css селекторы

Полезные библиотеки

  • html_text - извлечь текст из сложного селектора, аналог .get_text(' ', strip=True) из BeautifulSoup, но быстрее и точнее.

Полезные браузерные расширения

  • Selector Gadget получить короткий css или xpath элемента(ов), см. видео на их сайте. Получается намного лучше встроенного в браузер copy as css/xpath.

Нельзя мешать yield и return?

После return жизни нет. Нужно возвращать список или что-то итерируемое.

Как вытащить узел по тексту внутри него используя css-селектор

Через CSS - никак. Использовать xpath contains. Документация по xpath.

Как поставить на windows

Простой способ - поставить в anaconda

Как достать items из последного job-а в scrapinghub?

https://app.scrapinghub.com/api/items.json?project=PROJECT&spider=SPIDERNAME&apikey=KEY там где SPIDERNAME нужно вставить именно название, а не номер паука. дополнительно можно почитать тут

Как спарсить данные из нескольких форм с POST-запросами

Использовать цикл по форме c FormRequest.from_response, дополнительное поле со счетчиком формы formnumber=counter и с фильтром dont_filter=True.

Как обойти Cloudflare?

Страница отдает 503 ошибку. На этой странице javascript собирает код в форму с рандомным урлом и тремя hidden полями. После отправки этой формы отдается 302 редирект на нужную страницу.

Где найти дефолтные настройки Scrapy?

default_settings.py в офф.репо

Как проанализировать запрос/форму?

Chrome -> devtools -> network -> клик на страницу -> copy as curl. Далее гуглим "curl to python", вставляем код и получаем распаршенный код в библиотеке requests

Чем проанализировать пакеты сети или воспроизвести запрос/форму?

Fiddler или postman(он умеет сразу в питонкод конвертить). Мощнее и сложнее wireshark.

Деплой Scrapy

  • Хостинг Scrapinghub по дефолту стоит задержка, нужно отключать в настройках AUTOTHROTTLE_ENABLED чекбокс False
  • UI для Scrapy ScrapydWeb
  • Управление Scrapyd

Тесты

На сколько Scrapy быстрый?

Проверка N страниц.

  • requests в один поток - бесконечное время
  • scrapy из локальной машины - 30 минут
  • scrapinghub с включенным по дефолту тротлингом - больше 1 часа
  • scrapinghub без троттлинга 1 юнит - 23 минуты
  • scrapinghub без троттлинга 3 юнита - 15 минут

Можно ли использовать регулярные выражения в xpath?

Да, можно

Мне нужно использовать регулярки, но я их боюсь. С чего начать?

Полезные ресурсы по Xpath

Справочники и туториалы с примерами:

Подборка cheatsheets и bestpractices по xpath

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.