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