使用python爬取图书网站的信息并保存至excel

首先介绍python中xlwt库

  • 引入xlwt包
import xlwt
  • 创建简单的工作表
# 创建工作簿
workBook = xlwt.Workbook("UTF-8")

# 创建工作表
oneWorkSheet = workBook.add_sheet("sheet1")

# 写入数据(行, 列, 数据)
oneWorkSheet.write(0, 0, "hello")
oneWorkSheet.write(0, 1, "xlwt")

# 保存数据,入参为文件路径
workBook.save("myExcel.xls")
  • 效果如图
    在这里插入图片描述
    接下来进入正题
    在爬取网页信息前需要找到网页某些数据的请求的url
    比如下面的网页
    我们打开网页然后右击检查->network->然后选择fetch/XHR
    就可以看到这个网页的所有请求了
    随便选一个请求点开就有请求的基本信息:
    Headers:
    请求的url,请求方式(get/post/update/delete),还有一些请求头信息,响应头信息
    Response:
    然后点response可以看到某个请求返回的响应数据,也就是一些展示在页面的数据
    在这里插入图片描述
    在这里插入图片描述
现在要爬取网页的图书价格以及库存

1. 首先通过请求url获取到这些图书的图书id,并把图书Id保存在一个list里

# TODO 先获取图书id
book_id_list = []
url = requests.get("https://www.ptpress.com.cn/recommendBook/getRecommendBookListForPortal?bookTagId=e03b1ec7-466e-484c-865c-6738989e306a")
res = json.loads(url.text)
res_data = res['data']
for i in range(len(res_data)):
    book_id_list.append(res_data[i]['bookId'])

2. 通过图书Id来获取图书的ISBN和价格(获取库存的那个请求需要携带ISBN参数),并加入进list里

# TODO 获取图书ISBN和价格
isbn_list = []
price_list = []
for i in range(len(res_data)):
    data_post_id = {
         "bookId": book_id_list[i],
    }
    url = requests.post("https://www.ptpress.com.cn/bookinfo/getBookDetailsById", data=data_post_id)
    res = json.loads(url.text)
    book = res['data']
    isbn_list.append(book['bookDetail']['data']['isbn'])
    price_list.append(book['discountPrice'])

3. 通过获取到的ISBN当作参数来获取图书库存

# TODO 获取库存
last_num_list = []
for i in range(len(res_data)):
      data_post_isbn = {
          "isbn": isbn_list[i],
      }
      url = requests.post("https://www.ptpress.com.cn/order/getBookSaleStock", data=data_post_isbn)
      res = json.loads(url.text)
      book = res['data']
      last_num_list.append(book)

4. 最后将信息存到excel表格里面

# 存入excel
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('计算机类新书价格库存信息表', cell_overwrite_ok=True)
worksheet.write(0, 0, '图书价格')
worksheet.write(0, 1, '库存数量')
for i in range(len(res_data)):
   worksheet.write(i+1, 0, price_list[i])
   worksheet.write(i+1, 1, last_num_list[i])
workbook.save('计算机类新书价格库存信息表.xls')

5.整体的代码展示

import json

import requests
import xlwt


def get_price_num():
    # TODO 先获取图书id
    book_id_list = []
    url = requests.get("https://www.ptpress.com.cn/recommendBook/getRecommendBookListForPortal?bookTagId=e03b1ec7-466e-484c-865c-6738989e306a")
    res = json.loads(url.text)
    res_data = res['data']
    for i in range(len(res_data)):
        book_id_list.append(res_data[i]['bookId'])
    # TODO 获取图书ISBN和价格
    isbn_list = []
    price_list = []
    for i in range(len(res_data)):
        data_post_id = {
            "bookId": book_id_list[i],
        }
        url = requests.post("https://www.ptpress.com.cn/bookinfo/getBookDetailsById", data=data_post_id)
        res = json.loads(url.text)
        book = res['data']
        isbn_list.append(book['bookDetail']['data']['isbn'])
        price_list.append(book['discountPrice'])
    # TODO 获取库存
    last_num_list = []
    for i in range(len(res_data)):
        data_post_isbn = {
            "isbn": isbn_list[i],
        }
        url = requests.post("https://www.ptpress.com.cn/order/getBookSaleStock", data=data_post_isbn)
        res = json.loads(url.text)
        book = res['data']
        last_num_list.append(book)
    # 存入excel
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('计算机类新书价格库存信息表', cell_overwrite_ok=True)
    worksheet.write(0, 0, '图书价格')
    worksheet.write(0, 1, '库存数量')
    for i in range(len(res_data)):
        worksheet.write(i+1, 0, price_list[i])
        worksheet.write(i+1, 1, last_num_list[i])
    workbook.save('计算机类新书价格库存信息表.xls')


if __name__ == '__main__':
    get_price_num()

最终得到的excel表格

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值