Рубрики
Без рубрики

Использование Scrapy в Pycharm

Мы живем в мире, который опирается на данные, огромное количество данных. Эти данные используются во многих областях бизнеса. Более “

Автор оригинала: Dan Sylke.

Мы живем в мире, который опирается на данные, огромное количество данных. Эти данные используются во многих областях бизнеса, например:

  • Маркетинговые продажи
  • Исследование конкуренции
  • Ведущее поколение
  • Агрегация контента
  • Мониторинг потребительских настроений
  • Аналитика данных и наука о данных
  • Обучение машины AI
  • Недвижимость
  • Данные продукта и цены

Большая часть этих данных доступна в Интернете для людей для чтения и сравнения через сайты, которые специализируются на типе данных, которые они заинтересованы. Но не очень эффективно, не говоря уже о том, чтобы упомянуть трудоемкие и очень трудно использовать в других программах. Веб-соскоб – это способ извлечения данных, которые вам нужны очень быстрые и эффективно сохраняют их в форматах, которые могут использоваться в других программах.

Цель этой статьи состоит в том, чтобы быстро добраться до нас и бегать с помощью сцепки. Хотя сценария может обрабатывать как CSS, так и XPath Теги, чтобы получить нужные данные, мы будем использовать CSS. Сайт, который мы собираемся соскребать, – это Книги для царапания «Использование Python Инструменты веб-разработчика в Firefox С Пычарм и пакет Python пакет.

Установка Scrapy на Pycharm

Установите, используя настройки по умолчанию, как только эти приложения будут установлены, нам нужно создать проект. Чтобы сделать это, откройте Pycharm и нажмите Файл → Новый проект ... , ты видишь это:

Я назвал свой проект «ScrapingProject» Но вы можете назвать его все, что вам нравится, это займет некоторое время для создания. Как только проект создан, нажмите на Терминал Вкладка и введите PIP Установить Scrapy :

Создание сцепной проекта в Pycharm

После установки Scrapy необходимо создать сцепное проект, используя Scrapy StartProject Я называю мой Scrapebooks. :

Создание соскоба паука

Когда создание проекта завершается изменение каталогов в терминале в папку проекта ( CD ), это создает дополнительные файлы, необходимые для запуска паука. Кроме того, именно здесь мы ввезем других необходимых команд. Теперь создать паук, откройте папку проекта прямо Нажмите на Spider.Folder Выберите «Новый» → «Python File ‘И создайте новый файл Python:

Откройте новый файл Python введите следующее:

# Import library
import scrapy

# Create Spider class
class booksToScrape(scrapy.Spider):
    # Name of spider
    name = 'books'

    # Website you want to scrape
    start_urls = [
        'http://books.toscrape.com'
    ]
    # Parses the website
    def parse(self, response):
        pass

Это должно выглядеть так:

Мы собираемся соскабливать название и цену от ‘ Книги для царапания «Так что давайте откроем Firefox и посетите сайт. Щелкните правой кнопкой мыши на заголовке книги и выберите «Проверьте» из контекстного меню.

Осмотрите веб-сайт

Осмотрите сайт, мы видим, что тег, который нам нужно использовать для получения заголовка книги, находится под

ярлык. Чтобы убедиться, что это даст нам все названия на странице, используйте «поиск» в инспекторе. Нам не нужно использовать весь путь, чтобы получить все названия для страницы, используйте [Название] в поисках. « А «Определяет тег и [] отделяет название от усердие . На странице будет 20 результатов, нажав «Enter», вы можете увидеть, что все заголовки книги на этой странице Cyctsing.

Чтобы узнать, будет ли этот селектор работать в Scrapy, мы собираемся использовать Scrape Shell. Вернитесь к терминалу Pycharm и введите Scrapy Shell Чтобы поднять оболочку, это позволяет нам взаимодействовать напрямую со страницей. Получить веб-страницу, используя fetch (‘ http://books.toscrape.com ):

Входите в подсказку Response.csss ('A [Title]'). Get () чтобы увидеть, что мы получаем.

Закрывать Но мы получаем только одно название, а не только название, но и каталог ссылки тоже. Нам нужно скапиться, чтобы схватить только название текста всех книг на этой странице. Для этого мы будем использовать :: Текст Чтобы получить название текста и .получить все () для всех книг. Новая команда – Response.csss ('A [Title]:: Text'). GetAll () :

Намного лучше, у нас теперь есть все названия со страницы. Давайте посмотрим, сможем ли мы сделать это лучше, используя цикл для цикла:

for title in response.css('a[title]::text').getall():
    print(title)

Это работает, теперь давайте добавим его на паук. Просто скопируйте команды и поместите их ниже команды Parse:

Выход с помощью Scrapy Shell

Теперь, чтобы сканировать сайт, сначала мы должны выйти из SCRAPY Shell, чтобы сделать это использование Выход () Отказ Затем используйте имя паука, как этот Скапельки для скапийки ползать сайт. Вы не используете имя файла для ползания на странице, потому что структура, которую использует SCRAPY, ищет имя паука, а не имени файла и знает, где смотреть.

Ползет 101.

Теперь, когда у нас есть названия, нам нужны цены, используя тот же метод, что и, щелкнув правой кнопкой мыши по цене и осмотрите ее.

Тег, который мы хотим по цене книги .price_color. . Используя предыдущие команды, мы просто поменяем «А [титул]» для '. price_color' Отказ Использование Scrape Shell мы получаем это:

Теперь у нас есть теги, необходимые для захвата только заголовков и цен со страницы, нам нужно найти общий элемент, держа их вместе. Глядя на более ранние элементы, вы, возможно, заметили, что они сгруппированы под .Product_pod. с другими атрибуты . Чтобы отделить эти элементы от других, мы немного настроим код:

for i in response.css('.product_pod'):
        title = i.css('a[title]::text').getall()
        price = i.css('.price_color::text').getall()
        print(title, price)

Как видите, мы называем тегом, что заголовок и ценовые элементы сгруппированы в соответствии с их отдельными тегами. При использовании Печать () Команда напечатает результаты на экран терминала, его нельзя сохранить в выходной файл, например .csv. или .json . Чтобы сохранить результаты к файлу, который вам нужно использовать доходность команда:

 yield {
                'Title': title,
                'Price': price
            }

Теперь паук готов ползать сайт и схватить только заголовки и цены, он должен выглядеть так:

# Import library
import scrapy

# Create Spider class
class booksToScrape(scrapy.Spider):
    # Name of spider
    name = 'books'

    # Website you want to scrape
    start_urls = [
        'http://books.toscrape.com'
    ]
    # Parses the website
    def parse(self, response):
        # Book Information cell
        for i in response.css('.product_pod'):
            # Attributes
            title = i.css('a[title]::text').getall()
            price = i.css('.price_color::text').getall()
            # Output
            yield {
                'Title': title,
                'Price': price
            }

Давайте ползти на сайт и посмотрим, что мы получаем, я буду использовать Скапелка для книг -o books.csv от терминала.

Теперь у нас есть данные, которые мы были после и могут использовать его в других программах. Предоставлено, это не так много данных, он используется для демонстрации того, как используется инструмент. Вы можете использовать этот паук, чтобы исследовать другие элементы на странице.

Заключение

Струпкость не легко учиться, и многие обескураживаются. Я хотел дать тех, кто заинтересован в этом быстрый способ начать использовать его и посмотреть, как это работает. Скапельница способна намного больше. Я только что поцарапал поверхность тем, что написал об этом. Чтобы узнать больше, проверьте официальный Документация Отказ

Оригинал: “https://blog.finxter.com/using-scrapy-in-pycharm/”