精简化爬虫流程(爬取+部署)

精简化爬虫流程(爬取+部署)

本篇博客主要爬取豆瓣电影部分电影数据,以JSON数据格式保存,并将爬取到的数据部署到本地接口服务器上。使用的技术主要有:

  • requests
  • JSON-server
  • npm

如果还有小伙伴电脑中没有npm安装方式,可以点击此链接进行安装:node.js安装详解

一、爬取数据

凡是涉及爬取数据,爬取过程无非就是:

  • 声明爬取URL,设置请求头
  • 发送请求后,服务器获取请求,返回响应
  • 解析数据
  • 保存数据
    以下将根据这4个步骤详细说明爬取的流程。

1、声明URL和请求头

url = "https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start=0&limit=760"
headers = {
        "User-Agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 80.0.3987.163Safari / 537.36",
    }

那么这两个声明如何获取呢?
我们以爬取豆瓣电影分类界面为例进行说明:界面链接
在这里插入图片描述

我们打开检查,找到动态请求的数据

在这里插入图片描述

然后我们去获取请求网页的URL和请求头,在这一步留意一下请求方式是GET,为下一步请求做准备。

在这里插入图片描述

在这里插入图片描述

我们留意到该URL有一点特殊,注意最后start=0&limit=20,这是获取前19条电影信息,我们想到如果我们修改这个取值范围,是不是就可以获取更多数据,通过实验果然如我们所想,仅是修改URL就能实现滑动翻页获取新的数据。

在这里插入图片描述

2、发送请求

前面我们注意到该URL的请求方式是GET方式,返回的数据是JSON型数据。

 response = requests.get(url = url, headers = headers)

3、解析数据

我们将服务器返回的数据响应做进一步解析和数据封装,在原有的数据上加上number序号和name名称。

def getData(response):
    data = {}
    datalist = {}
    number = {}
    name = {}
    number.setdefault('number', 0)
    name.setdefault('name', '剧情类')

    datalist.setdefault('number', number)
    datalist.setdefault('name', name)
    datalist.setdefault('list', response.json())
    data.setdefault('data',datalist)
    return data

4、保存数据

将数据保存到同层级目录下,名称为“db_movie.json”。

def saveData(datalist):
    with open('.\db_movie.json','w',encoding = 'utf-8') as fp:
       json.dump(datalist,fp = fp, ensure_ascii= False,sort_keys = True)

在这里插入图片描述

二、源码

import requests
import json

# 发起请求,获取数据
def askURL():
    url = "https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start=0&limit=760"
    headers = {
        "User-Agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 80.0.3987.163Safari / 537.36",
    }
    response = requests.get(url = url, headers = headers)
    # print(response.json())
    datalist = getData(response)
    # print(datalist)
    return datalist

# 解析数据
def getData(response):
    datalist = {}
    number = {}
    name = {}
    number.setdefault('number', 0)
    name.setdefault('name', '剧情类')

    datalist.setdefault('number', number)
    datalist.setdefault('name', name)
    datalist.setdefault('list', response.json())
    
    return datalist

# 保存数据
def saveData(datalist):
    with open('.\db_movie.json','w',encoding = 'utf-8') as fp:
       json.dump(datalist,fp = fp, ensure_ascii= False,sort_keys = True)

# 主功能函数
def main():
    datalist = askURL()
    saveData(datalist)

if __name__ == '__main__':
    main()

三、本地接口部署

1、首先运行win+R,全局安装json-server

npm install -g json-server

在这里插入图片描述

2、然后进入到我们的项目目录下,初始化packjson文件,具体指令如下:

npm init
依次填写项目名称、描述、作者,其余部分按默认回车即可

在这里插入图片描述

在这里插入图片描述

3、输入以下指令,安装json-server

npm install json-server –save

在这里插入图片描述

4、使用vscode打开项目文件夹,配置启动项。

将我们之前爬取保存为JSON数据格式的文件复制过来,并在package.json文件下设置json-server启动快捷方式。

在scripts下,设置

"json-server":"json-server --watch db.json"

在这里插入图片描述

5、启动服务

在中断输入以下指令启动服务。

npm run json-server

在这里插入图片描述

在这里插入图片描述

在此界面我们看到我们的数据目录data显示在本地接口上,请求方式有GET、POST、PUT、PATCH等。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值