第一个Pyspider 爬虫

PySpider 架构

PySpider 的架构主要分为Scheduler(调度器)、Fetcher(抓取器)和Processor(处理器)三部分,整个爬虫收到Monitor(监控器)的监控,抓取的结果被Result Worker(结果处理器)处理。

在这里插入图片描述

步骤1:

打开cmd 或者 pycharm 终端 或者 mac 终端 ,输入"pyspider all “或"pyspider” 命令 然后打开浏览器,在地址栏中输入网址:127.0.0.1:5000
即可进入PySpider的后台,需要注意的是,终端不要关闭

在这里插入图片描述

步骤2 :

单击【 create】 按钮,再打开的对话框中输入任意名称(有意义即可)。我这里输入的是wan_gou_spider 因为我将爬取这个网站
在这里插入图片描述

步骤三 :

就会进入脚本编辑页面
在这里插入图片描述

到这里就可以开始编写你的脚本了

这里提供一个案例 爬取玩够网的机场信息

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2020-06-25 09:35:21
# Project: wan_gou_spider

from pyspider.libs.base_handler import *
import re

class Handler(BaseHandler):
    crawl_config = {
    }
    def __init__(self):
        self.urls=[
            "www.wego.cn/airports/airport-name/a",
            "www.wego.cn/airports/airport-name/b",
            "www.wego.cn/airports/airport-name/c",
            "www.wego.cn/airports/airport-name/d",
            "www.wego.cn/airports/airport-name/e",
        ]

    @every(minutes=24 * 60)
    def on_start(self):
        for url in self.urls:
            self.crawl(url, callback=self.index_page,validate_cert=False)

    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        url_list = re.findall('<li\sclass="extra-item\sis-hidden">\s+<a\shref="([\s\S+]*?)">\s+\S+',response.text)
        for item in url_list:
            url="http://www.wego.cn"+item
            self.crawl(url, callback=self.detail_page,validate_cert=False)
    @config(priority=2)
    def detail_page(self, response):
        print('------------进入匹配------------')
        AirportName = re.findall('<tr>\s+<td\swidth="200">全名</td>''\s+<td>([\s\S+]*?)</td>\s+</tr>',response.text)
        IATA = re.findall('<tr>\s+<td\swidth="200">IATA\s代码</td>''\s+<td>([\s\S+]*?)</td>\s+</tr>',response.text)
        Latitude = re.findall('<tr>\s+<td\swidth="200">纬度</td>''\s+<td>([\s\S+]*?)</td>\s+</tr>',response.text)
        Longitude = re.findall('<tr>\s+<td width="200">经度</td>\s+''<td>([\s\S+]*?)</td>\s+</tr>',response.text)
        return {
            "url": response.url,
            "AirportName":AirportName[0]if AirportName else "无",
            "IATA":IATA[0]if IATA else "无",
            "Latitude":Latitude[0]if Latitude else "无",
            "Longitude":Longitude[0]if Longitude else "无"
        }

代码完成后:

可以单击右上角的【Save】按钮 ,然后返回到dashboard,把爬虫的状态改成Running 或debug,然后单击右侧【run】按钮,爬虫即可成功启动。
查看爬取结果,在dashboard 页面单击【Results】按钮,进入爬取结果列表。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45215649/article/details/106955431