English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Подробное описание установки и простого использования фреймворка Scrapy для Python

Записка:久闻Python-фреймворка для веб-скрейпинга. В последние дни изучал Scrapy, одну из его веб-скрейпинговых рамок, и хочу поделиться своим пониманием. Если есть ошибки в изложении, пожалуйста, исправьте их, гуру.

Первый раздел: Начальное знакомство с Scrapy

Scrapy - это приложение-фреймворк, написанный для захвата данных веб-сайтов, извлечения структурированных данных. Он может быть применен в программах для(data mining, обработки информации или хранения исторических данных и т.д.).

Он был создан дляЗахватка страницы(точнее говоря,Сетевая захватка) разработан, также может быть применен для получения данных, возвращаемых API (напримерAmazon Associates Web Services) или общим сетевому пауку.

Этот документ将通过 представление концепций, лежащих в основе Scrapy, чтобы вы могли понять его принцип работы и определить, является ли Scrapy тем, что вам нужно.

Когда вы готовы начать свой проект, вы можете обратиться кВведение в обучение.

Второй раздел: Обзор установки Scrapy

Платформа выполнения фреймворка Scrapy и связанные вспомогательные инструменты

  1. Python 2.7 (Python последняя версия 3.5, здесь был выбран вариант 2.7)
  2. Python Package: pip and setuptools. В настоящее время pip зависит от setuptools, и если его еще не установлено, он будет автоматически установлен.
  3. lxml. Большинство дистрибутивов Linux поставляются с lxml. Если его нет, пожалуйста, посмотритеhttp://lxml.de/installation.html
  4. OpenSSL. В системах, кроме Windows (пожалуйста, ознакомьтесь с руководством по установке платформы), уже предоставлен.

Вы можете использовать pip для установки Scrapy (рекомендуется использовать pip для установки Python package).

pip install Scrapy

Процесс установки в Windows:

1. После установки Python 2.7 вам нужно изменить переменную окружения PATH, добавив исполняемые файлы Python и дополнительные скрипты в системный путь. Добавьте следующие пути в PATH:

C:\Python27\;C:\Python27\Scripts\;

Кроме того, можно использовать команду cmd для настройки Path:

c:\python27\python.exe c:\python27\tools\scripts\win_add2path.py

После завершения установки и конфигурации вы можете выполнить команду python --version, чтобы проверить версию установленного Python. (如图所示)

2, Изhttp://sourceforge.net/projects/pywin32/Установитьpywin32

Пожалуйста, убедитесь, что загружена версия, соответствующая вашей системе (win32 или amd64)

Изhttps://pip.pypa.io/en/latest/installing.htmlУстановить pip

3, Откройте окно командной строки и убедитесь, что pip установлен правильно:

pip --version

4、До сих пор Python 2.7 и pip работают корректно. Далее устанавливаем Scrapy:

pip install Scrapy

Таким образом, установка Scrapy в Windows завершена.

Третий раздел, Введение в Scrapy.

1、Создайте проект Scrapy в cmd.

scrapy startproject tutorial

H:\python\scrapyDemo>scrapy startproject tutorial
Новый проект Scrapy 'tutorial', используя каталог шаблонов 'f:\\python27\\lib\\site-packages\\scrapy\\templates\\project', создан в:
  H:\python\scrapyDemo\tutorial
Вы можете запустить ваш первый спайдер с помощью:
  cd tutorial
  scrapy genspider example example.com

2、Структура каталога файлов такова:

.

Анализ структуры Scrapy фреймворка:

  1. scrapy.cfg: Файл конфигурации проекта.
  2. tutorial/: Python-модуль этого проекта. Позже вы добавите сюда код.
  3. tutorial/items.py: Файл item в проекте.
  4. tutorial/pipelines.py: Файл pipelines в проекте.
  5. tutorial/settings.py: Файл настроек проекта.
  6. tutorial/spiders/: Каталог для размещения кода спайдера.

3、Написать простого паука

1、В файле item.py настроить поля для сбора данных на страницах.

# -*- coding: utf-8 -*-
# Определите модели для ваших собранных данных
#
# См. документацию в:
# http://doc.scrapy.org/en/latest/topics/items.html
import scrapy
from scrapy.item import Item, Field
class TutorialItem(Item):
  title = Field()
  author = Field()
  releasedate = Field()

2、В файле tutorial/spiders/spider.py записать сайт для сбора данных и определить поля для сбора данных.

# -*-coding:utf-8-*-
import sys
from scrapy.linkextractors.sgml import SgmlLinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from tutorial.items import TutorialItem
reload(sys)
sys.setdefaultencoding("utf-8")
class ListSpider(CrawlSpider):
  # Название спайдера
  name = "tutorial"
  # Установка задержки загрузки
  download_delay = 1
  # Разрешенные домены
  allowed_domains = ["news.cnblogs.com"]
  # Начальные URL
  start_urls = [
    "https://news.cnblogs.com"
  ]
  # Параметры для извлечения данных, без callback означает рекурсивное извлечение данных для этого класса URL
  rules = (
    Rule(SgmlLinkExtractor(allow=(r'https://news.cnblogs.com/n/page/\d',))),
    Rule(SgmlLinkExtractor(allow=(r'https://news.cnblogs.com/n/\d+',)), callback='parse_content'),
  )
  # 解析内容函数
  def parse_content(self, response):
    item = TutorialItem()
    # 当前URL
    title = response.selector.xpath('//div[@id="news_title"]')[0].extract().decode('utf-8')
    item['title'] = title
    author = response.selector.xpath('//div[@id="news_info"]/span/a/text()')[0].extract().decode('utf-8')
    item['author'] = author
    releasedate = response.selector.xpath('//div[@id="news_info"]/span[@class="time"]/text()')[0].extract().decode('
      'utf-8')
    item['releasedate'] = releasedate
    yield item

3、在tutorial/pipelines.py管道中保存数据。

# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
import json
import codecs
class TutorialPipeline(object):
  def __init__(self):
    self.file = codecs.open('data.json', mode='wb', encoding='utf-8')#数据存储到data.json
  def process_item(self, item, spider):
    line = json.dumps(dict(item)) + "\n"
    self.file.write(line.decode("unicode_escape"))
    return item

4. Настройте среду выполнения в tutorial/settings.py.

# -*- coding: utf-8 -*-
BOT_NAME = 'tutorial'
SPIDER_MODULES = ['tutorial.spiders']
NEWSPIDER_MODULE = 'tutorial.spiders'
# Запретить cookies, предотвратить бан
COOKIES_ENABLED = False
COOKIES_ENABLES = False
# Установить Pipeline, здесь реализуется запись данных в файл
ITEM_PIPELINES = {
  'tutorial.pipelines.TutorialPipeline': 300
}
# Установить максимальную глубину паука
DEPTH_LIMIT = 100

5. Создайте файл main и выполните код паука.

from scrapy import cmdline
cmdline.execute("scrapy crawl tutorial".split())

В конце концов, после выполнения main.py в файле data.json можно получить json данные сбора.

Вот и все, что касается этой статьи, надеюсь, это поможет вам в изучении.我们也希望大家多多支持呐喊教程。

Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору. Контент предоставлен пользователями Интернета, загружен самостоятельно, сайт не обладает правами собственности, не underwent редактирование人工, и не несет ответственности за соответствующие юридические последствия. Если вы обнаружите содержание,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для сообщения о нарушении,并提供 соответствующие доказательства. При подтверждении факта нарушения сайт немедленно удалят涉嫌侵权的内容。

Вам может понравиться