项目创建和运行-scrapy框架3-python

1、项目简介

目标:爬取迁木网世界大学排名及大学基本信息,图示

在这里插入图片描述

在这里插入图片描述

步骤:

  1. 获取排名当前页中所有大学的链接
  2. 跳转链接,获取表格中大学的基本信息。

2、scrapy创建项目

2.1、创建项目

创建项目命令:

scrapy startproject myproject [project_dir]
# 创建我们的项目
scrapy startproject qianmu1
  • myproject谁自定义项目名称,路径若不指定,默认为当前路径。

2.2、创建spider

通过前面知道,spider用于处理响应会的数据,命令如下:

scrapy gensider example example.com
  • example:为spider名称
  • example.com: 为要爬取的域名,限定爬取的范围。

创建我们的spider

cd qianmu1
scrapy genspider usinfo www.qianmu.org

2.3、编写逻辑代码

usinfo.py代码如下:

import scrapy


class UsinfoSpider(scrapy.Spider):
    name = 'usinfo'
    # 允许爬取的域名
    allowed_domains = ['www.qianmu.org']
    # 爬取起始url
    start_urls = ['http://www.qianmu.org/ranking/1528.htm']

    # 当框架请求start_urls成功时,自动调用该方法
    def parse(self, response):
        # 提取链接
        links = response.xpath('//div[@class="rankItem"]/table//tr[position()>1]/td[2]/a/@href').getall()

        # 3、解析大学链接获取表格数据
        for link in links:
            yield response.follow(link, self.parse_university)

    def parse_university(self, response):
        """解析大学链接获取详细信息"""
        # 解析并获取获取大学名称
        data = {'name': response.xpath('//div[@id="wikiContent"]/h1/text()').get()}
        # 获取表格第一列
        table = response.xpath('//div[@id="wikiContent"]/div[@class="infobox"]/table')
        if table:
            table = table[0]
            keys = table.xpath('.//td[1]/p/text()').getall()
            # 获取表格第二列,如果有多个p合并
            cols = table.xpath('.//td[2]')
            values = [''.join((col.xpath('.//text()').getall())).replace('\t', '') for col in cols]
            if len(keys) == len(values):
                data.update(zip(keys, values))
        yield data

2.4、生成虚拟环境

命令:

virtualenv env

2.3、运行

步骤:

  1. 进入虚拟环境

    cd env/Scripts
    activate
    
  2. 启动项目

    scrapy craw usinfo
    
    • usinfo:生成spider时的名称

3、项目目录

项目完整目录结构如图所示:在这里插入图片描述

简单介绍各个目录/文件:

  • qianmu1:项目根目录

  • -env:虚拟环境

  • -qianmu1:创建项目自动生成

  • –spiders:放置所有的spiders,spider可以创建多个

  • —usinfo.py:某个具体的spider

  • –items.py:结构化的数据

  • –middlewares.py:中间件

  • –pipelines.py:管道,把解析后的数据放到哪里,比如持久化到数据库或者文件

  • –settings.py:配置文件

  • -scrapy.cfg:scrapy配置文件

关于虚拟环境的相关知识,可自行查阅相关文档。

参考视频:https://www.bilibili.com/video/BV1R7411F7JV p557~p558

源代码仓库地址:https://gitee.com/gaogzhen/python-study

QQ群:433529853

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaog2zh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值