数据采集与预处理课程 ——课中考试 ——爬取网页书籍信息并保存到excel

记录:
2021-2022第1学期数据采集与预处理课程 课中考试
一、打开人民邮电出版社(http://www.ptpress.com.cn)主页,找到“新书推荐版块”
中对应方向的真实地址。(学号1-2选计算机,3-4选电子,依次类推。)
在这里插入图片描述
二、编写代码获取相关图书的基本信息“bookName”、“bookID”、“picPath”保存到excel
中,命名为“某类新书基本信息.xlsx”,例如:“计算机新书基本信息. xlsx”。
三、在第二步的基础上爬取图书的价格和库存信息,保存到Excel表中,命名为“某类新书价格库存信息表.xlsx ”,例如:计算机类新书价格库存信息表.xlsx。

代码如下:

import requests
import json
from openpyxl import workbook

# 获取分类的书籍列表
def getlist():
    url='https://www.ptpress.com.cn/recommendBook/getRecommendBookListForPortal?bookTagId=780a3d85-a6da-438b-8b6a-c9c50e374e55'
    headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36',
        'Cookie':'gr_user_id=796019e3-dc58-40f5-a6df-892a38008bcd; acw_tc=2760822416373059896443147efcf3dd457a5539d63a07fdafd12f3041cd93; JSESSIONID=A0FD72E84771D06417CF145392DAA679; gr_session_id_9311c428042bb76e=1a1d8cc2-0de9-4409-adc4-07de4cdb503f; gr_session_id_9311c428042bb76e_1a1d8cc2-0de9-4409-adc4-07de4cdb503f=true'
    }
    # 发送get请求获取相应的分类的书籍列表信息
    response = requests.get(url,headers=headers)
    tans_dict = json.loads(response.text)
    results= tans_dict['data']
    wb = workbook.Workbook()
    ws = wb.active
    ws.append(['bookName','bookID','picPath'])
    for result in results:
        ws.append([result['bookName'],result['bookId'],result['picPath']])

    # wb.save('成功\励志类新书基本信息.xlsx')    报错:带有特殊字符 / ,去掉
    wb.save('成功励志类新书基本信息.xlsx')
    return results

# 获取书籍的价格
def price(results):
    url1 = 'https://www.ptpress.com.cn/bookinfo/getBookDetailsById'
    headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36',
        }
    Price = []
    Isbn = []
    for i in range(len(results)):
        params = {
            'bookId':results[i]['bookId']
        }
        # 发送post请求相对应的书本的价格和isbn
        response = requests.post(url =url1,params = params,headers=headers)
        tans_dict = json.loads(response.text)
        data = tans_dict['data']
        # 获取对应的价格
        Price.append(data['discountPrice'])
        # 查询库存量接口需要的传参
        Isbn.append(data['bookDetail']['data']['isbn'])
    return Price, Isbn

# 获取书籍的库存
def count(results,Count):
    url2 = 'https://www.ptpress.com.cn/order/getBookSaleStock'
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
    }
    count = []
    for y in range(len(results)):
        params = {
            'isbn': Count[y]
        }
        responses = requests.post(url=url2, params=params, headers=headers)
        data = responses.json()
        count.append(data['data'])
    wb = workbook.Workbook()
    ws = wb.active
    ws.append(['bookName','bookId','picPath','price', 'count'])
    for i in range(len(results)):
        ws.append([results[i]['bookName'], results[i]['bookId'], results[i]['picPath'],price[i],count[i]])
    wb.save('成功励志类新书价格库存信息表.xlsx')

if __name__ == '__main__':
    results = getlist()
    price,Isbn = price(results)
    count(results,Isbn)

注意:
我的分类是成功\励志,原本我是这样写的: wb.save(‘成功\励志类新书基本信息.xlsx’) ,运行就产生报错,后来查询了一番,因为有‘\’字符,python处理时将它解析成了路径,所以产生了报错,最简单的解决方法我删掉了\

运行结果:
在这里插入图片描述

成功励志类新书基本信息:
在这里插入图片描述

成功励志类新书价格库存信息表:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值