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

Python之Scrapy爬虫框架安装及简单使用详解

Prefazione: Ho sentito parlare a lungo del nome del framework di爬虫python. Negli ultimi giorni ho studiato il framework di爬虫 Scrapy, e voglio condividere la mia comprensione con tutti. Se ci sono errori di espressione, prego i grandi maestri di correggerli.

Prima, un'occhiata veloce a Scrapy

Scrapy è una applicazione framework scritta per catturare i dati dei siti web, estrarre dati strutturati. Può essere applicato in una serie di programmi, tra cui estrazione dati, elaborazione informazioni o archiviazione dati storici.

È stato originariamente progettato perScraping delle pagine(più esattamente,Web scraping) progettato, ma può anche essere utilizzato per ottenere i dati restituiti dall'API (ad esempioAmazon Associates Web Services) o uno spider web universale.

Questa documentazione ti fornirà una panoramica dei concetti dietro Scrapy, ti aiuterà a comprendere il funzionamento del framework e a determinare se Scrapy è ciò di cui hai bisogno.

Quando sei pronto per iniziare il tuo progetto, puoi fare riferimento aGuida di introduzione.

Secondo, introduzione all'installazione di Scrapy

Piattaforma di esecuzione del framework Scrapy e strumenti ausiliari correlati

  1. Python 2.7 (la versione più recente di Python è 3.5, qui è stata scelta la versione 2.7)
  2. Python Package: pip and setuptools. Ora pip dipende da setuptools, se non è installato, verrà installato automaticamente.
  3. lxml. La maggior parte delle distribuzioni Linux include lxml. Se mancante, consultarehttp://lxml.de/installation.html
  4. OpenSSL. È disponibile su tutti i sistemi al di fuori di Windows (consultare le istruzioni di installazione della piattaforma).

È possibile utilizzare pip per installare Scrapy (è raccomandato utilizzare pip per installare Python package).

pip install Scrapy

Flusso di installazione in Windows:

1、Installare Python 2.7 e poi, è necessario modificare la variabile d'ambiente PATH, aggiungendo i programmi eseguibili di Python e i script aggiuntivi al percorso di sistema. Aggiungere i seguenti percorsi al PATH:

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

Oltre a questo, è possibile utilizzare il comando cmd per impostare Path:

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

After the installation and configuration are complete, you can execute the command python --version to check the installed python version. (As shown in the figure)

2. Fromhttp://sourceforge.net/projects/pywin32/Installpywin32

Please confirm that the downloaded version is compatible with your system (win32 or amd64)

Fromhttps://pip.pypa.io/en/latest/installing.htmlInstall pip

3. Open the command line window and confirm that pip is installed correctly:

pip --version

4. So far, Python 2.7 and pip have been running correctly. Next, install Scrapy:

pip install Scrapy

So far, the Scrapy installation on Windows has been completed.

Chapter 3: Scrapy beginners tutorial

1. Create a Scrapy project in cmd.

scrapy startproject tutorial

H:\python\scrapyDemo>scrapy startproject tutorial
New Scrapy project 'tutorial', using template directory 'f:\\python27\\lib\\site-packages\\scrapy\\templates\\project', created in:
  H:\python\scrapyDemo\tutorial
You can start your first spider with:
  cd tutorial
  scrapy genspider example example.com

2. The file directory structure is as follows:

.

Parsing the structure of the Scrapy framework:

  1. the project's configuration file.
  2. the python module of this project. You will add code here later.
  3. the project's item file.
  4. the project's pipelines file.
  5. the project's settings file.
  6. directory where the spider code is placed.

3、Scrivere uno spidere semplice

1、Configurare gli esempi di campo da raccogliere nella pagina nel file item.py.

# -*- coding: utf-8 -*-
# Definire qui i modelli per i tuoi oggetti raccolti
#
# Vedere la documentazione in:
# 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、Scrivere nel file tutorial/spiders/spider.py il sito da raccogliere e raccogliere i campi rispettivamente.

# -*-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):
  # Nome del crawler
  name = "tutorial"
  # Impostazione del ritardo di download
  download_delay = 1
  # Domini permessi
  allowed_domains = ["news.cnblogs.com"]
  # URL di partenza
  start_urls = [
    "https://news.cnblogs.com"
  ]
  # Estrazione delle regole di crawling, senza callback indica che si procede alla crawling ricorsiva per il tipo di 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, configurare l'ambiente di esecuzione in tutorial/settings.py.

# -*- coding: utf-8 -*-
BOT_NAME = 'tutorial'
SPIDER_MODULES = ['tutorial.spiders']
NEWSPIDER_MODULE = 'tutorial.spiders'
# Disabilitare i cookies, per evitare il ban
COOKIES_ENABLED = False
COOKIES_ENABLES = False
# Impostare Pipeline, qui si realizza l'elaborazione dei dati nella scrittura del file
ITEM_PIPELINES = {
  'tutorial.pipelines.TutorialPipeline': 300
}
# Impostare la profondità massima di crawling dello spidere
DEPTH_LIMIT = 100

5, creare un file main per eseguire il codice dello spidere.

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

Infine, eseguendo main.py, ottenere i dati JSON dei risultati raccolti nel file data.json.

Questo è tutto il contenuto dell'articolo, speriamo che sia utile per la tua apprendimento e che tu sostenga fortemente la guida tutorial.

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright è dell'autore originale, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene il diritto di proprietà, non è stato editato manualmente e non assume responsabilità legali correlate. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, questo sito eliminerà immediatamente il contenuto sospetto di violazione del copyright.