Maison > Article > développement back-end > Tutoriel sur l'utilisation du framework de robot d'exploration Python Scrapy
Cet article vous propose un tutoriel sur l'utilisation du framework de robot d'exploration Python Scrapy. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Bonjour à tous, dans cet article, nous examinerons le puissant framework de robot d'exploration Python Scrapy. Scrapy est un framework d'exploration asynchrone simple à utiliser et puissant. Jetons d'abord un coup d'œil à son installation.
Installation de Scrapy
L'installation de Scrapy est très gênante Pour certaines personnes qui souhaitent utiliser Scrapy, son installation fait souvent mourir de nombreuses personnes à mi-chemin. Ici, je vais partager avec vous mon processus d'installation et les méthodes d'installation compilées sur Internet. J'espère que tout le monde pourra l'installer en douceur.
Installation de Windows
Avant de commencer, nous devons nous assurer que Python est installé. Dans cet article, nous utilisons Python3.5 comme exemple. . Scrapy a de nombreux packages dépendants, installons-les un par un.
Tout d'abord, utilisez pip -v pour vérifier si pip est installé normalement. Si c'est normal, nous passons à l'étape suivante
Nous avons introduit le package pip install wheel dans notre précédent ; article. Après l'avoir installé, nous pouvons installer un logiciel de roue ;
installation de lxml. L'article précédent a mentionné son installation, nous allons donc le réorganiser ici. whl adresse du fichier : ici. Recherchez le fichier de votre version correspondante. Après le téléchargement, recherchez l'emplacement du fichier, cliquez avec le bouton droit sur les propriétés du fichier, cliquez sur l'étiquette de sécurité et copiez son chemin. Ouvrez l'outil d'administration (cmd), pip install
Adresse du fichier PyOpenssl whl : ici. Cliquez pour télécharger, la méthode d'installation du fichier whl est la même que ci-dessus
Framework Twisted Ce framework est une bibliothèque réseau asynchrone et est le cœur de Scrapy. whl adresse du fichier : ici ;
Pywin32 Il s'agit d'une bibliothèque compatible Pywin32, adresse de téléchargement : ici, sélectionnez la version à télécharger
Si toutes les bibliothèques ci-dessus sont installées, alors nous allons Notre Scrapy ; peut être installé. pip install scrapy
n'est-il pas très gênant si vous n'aimez pas vous embêter, vous pouvez également l'installer facilement sous Windows. Ensuite, nous devons utiliser Anaconda dont nous avons parlé précédemment. Vous pouvez trouver l’installation spécifique vous-même ou la trouver dans les articles précédents. Ensuite, il n'a besoin que d'une seule ligne pour installer Scrapy :
conda install scrapy
Installation Linux
L'installation du système Linux est plus simple :
sudo apt- get install build-essential python3-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev
Installation Mac OS
Nous devons d'abord installer certaines bibliothèques dépendantes de C++, xcode -select --install
Vous devez installer les outils de développement en ligne de commande, nous cliquons pour installer. Une fois l'installation terminée, les bibliothèques dépendantes sont également installées.
Ensuite, nous utilisons directement pip pour installer pip install scrapy
Ci-dessus, l'installation de notre bibliothèque Scrapy est fondamentalement résolue.
Utilisation de base de Scrapy
Adresse du document chinois de Scrapy : ici
Scrapy est un framework d'application écrit pour explorer les données de sites Web et extraire des données structurelles. Il peut être utilisé dans une série de programmes, notamment l’exploration de données, le traitement de l’information ou le stockage de données historiques.
Son processus de projet de base est :
Créer un projet Scrapy
Définir l'élément extrait
Écrire une araignée pour explorer le site Web et extraire l'élément
🎜 >
Écrire un pipeline d'éléments pour stocker l'élément extrait (c'est-à-dire les données)Généralement, notre processus d'exploration est : Explorer la page d'index : demander l'URL de la page d'index et obtenir le code source, effectuez l'étape suivante de l'analyse ; Obtenez le contenu et le lien de la page suivante : analysez le code source, extrayez les données de la page d'index et obtenez le lien de la page suivante, effectuez l'étape suivante de l'explorationactivez l'exploration de la page : demandez les informations de la page suivante, analysez le contenu et demandez des liens sur la page suivante ; Enregistrez les résultats de l'exploration : enregistrez les résultats de l'exploration dans un format et un texte spécifiques, ou enregistrez la base de données. Voyons comment l'utiliser étape par étape. Créer un projetAvant de commencer à gratter, vous devez créer un nouveau projet Scrapy. Entrez le répertoire dans lequel vous prévoyez de stocker le code et exécutez la commande suivante (en prenant Zhihu Daily comme exemple) : scrapy startproject zhihurbCette commande créera un répertoire zhihu contenant le contenu suivant :zhihurb/
scrapy.cfg zhihurb/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py ...Ces fichiers sont : scrapy.cfg : Le fichier de configuration du projet zhihurb/ : Le module python du projet. Vous ajouterez le code ici plus tard. zhihurb/items.py : les fichiers d'éléments dans le projet.zhihurb/pipelines.py : les fichiers de pipelines dans le projet.zhihurb/settings.py : les fichiers de paramètres du projet.zhihurb/spiders/ : le répertoire où se trouve le code de l'araignée est placé.Définir l'élémentCette étape consiste à définir les informations de données que nous devons obtenir, telles que nous devons obtenir certaines URL dans le site Web, le contenu de l'article du site Web, le auteur de l'article, etc. L'endroit où cette étape est définie se trouve dans notre fichier items.py. import scrapyclass ZhihuItem(scrapy.Item):
name = scrapy.Field() article = scrapy.Field()Writing SpiderCette étape consiste à écrire le robot qui nous est le plus familier avec. Notre framework Scrapy nous permet de ne pas penser à la méthode d'implémentation, mais seulement d'écrire la logique d'exploration. Nous devons d’abord créer notre fichier crawler dans le dossier spiders/, par exemple, il s’appelle spider.py. Avant d'écrire un robot, nous devons d'abord définir du contenu. Prenons Zhihu Daily comme exemple : https://daily.zhihu.com/from scrapy import Spiderclass ZhihuSpider(Spider):
name = "zhihu" allowed_domains = ["zhihu.com"] start_urls = ['https://daily.zhihu.com/']
这里我们定义了什么呢?首先我们导入了Scrapy的Spider组件。然后创建一个爬虫类,在类里我们定义了我们的爬虫名称:zhihu(注意:爬虫名称独一无二的,是不可以和别的爬虫重复的)。还定义了一个网址范围,和一个起始 url 列表,说明起始 url 可以是多个。
然后我们定义一个解析函数:
def parse(self, response):
print(response.text)
我们直接打印一下,看看这个解析函数是什么。
运行爬虫
scrapy crawl zhihu
由于Scrapy是不支持在IDE中执行,所以我们必须在命令行里执行命令,我们要确定是不是cd到爬虫目录下。然后执行,这里的命令顾名思义,crawl是蜘蛛的意思,zhihu就是我们定义的爬虫名称了。
查看输出,我们先看到的是一些爬虫类的输出,可以看到输出的log中包含定义在 start_urls 的初始URL,并且与spider中是一一对应的。我们接着可以看到打印出了网页源代码。可是我们似乎并没有做什么,就得到了网页的源码,这是Scrapy比较方便的一点。
提取数据
接着就可以使用解析工具解析源码,拿到数据了。
由于Scrapy内置了CSS和xpath选择器,而我们虽然可以使用Beautifulsoup,但是BeautifulSoup的缺点就是慢,这不符合我们Scrapy的风格,所有我还是建议大家使用CSS或者Xpath。
由于之前我并没有写过关于Xpath或者CSS选择器的用法,那么首先这个并不难,而且熟悉浏览器的用法,可以很简单的掌握他们。
我们以提取知乎日报里的文章url为例:
from scrapy import Request
def parse(self, response):
urls = response.xpath('//p[@class="box"]/a/@href').extract() for url in urls: yield Request(url, callback=self.parse_url)
这里我们使用xpath解析出所有的url(extract()是获得所有URL集合,extract_first()是获得第一个)。然后将url利用yield语法糖,回调函数给下一个解析url的函数。
使用item
后面详细的组件使用留在下一章讲解,这里假如我们解析出了文章内容和标题,我们要将提取的数据保存到item容器。
Item对象相当于是自定义的python字典。 您可以使用标准的字典语法来获取到其每个字段的值。(字段即是我们之前用Field赋值的属性)。
假如我们下一个解析函数解析出了数据
def parse_url(self, response):
# name = xxxx # article = xxxx # 保存 item = DmozItem() item['name'] = name item['article'] = article # 返回item yield item
保存爬取到的数据
这里我们需要在管道文件pipelines.py里去操作数据,比如我们要将这些数据的文章标题只保留 5 个字,然后保存在文本里。或者我们要将数据保存到数据库里,这些都是在管道文件里面操作。我们后面在详细讲解。
那么最简单的存储方法是使用命令行命令:
scrapy crawl zhihu -o items.json
这条命令就会完成我们的数据保存在根目录的json文件里,我们还可以将他格式保存为msv,pickle等。改变命令后面的格式就可以了。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!