利用Requests爬取图书信息

本文介绍了一个使用 Python 的 requests 库从指定网站爬取图书基本信息、价格及库存信息的方法,并将这些信息分别保存到两个 Excel 文件中。首先通过 GET 请求获取图书列表,然后逐条抓取详细信息并 POST 请求获取价格和库存。
import requests
import json
from openpyxl import Workbook, load_workbook
 
url = "https://www.ptpress.com.cn/recommendBook/getRecommendBookListForPortal?bookTagId=2725fe7b-b2c2-4769-8f6f" \
      "-c95f04c70275"
headers = {
    "bookTagId": "2725fe7b-b2c2-4769-8f6f-c95f04c70275"
}
resp = requests.get(url, headers=headers)
resp.encoding = 'utf-8'
res = json.loads(resp.text)
results = res['data']
# 创建一个xlsx文件对象
workbook = Workbook()
worksheets = workbook.worksheets[0]
worksheets.append(['bookName(书名)', 'bookId(书本ID)', "picPath"])
 
workbook2 = Workbook()
worksheets2 = workbook2.worksheets[0]
worksheets2.append(['bookName(书名)', 'discountPrice(价格)', "num(库存)"])
 
for result in results:
    name = result['bookName']
    worksheets.append([result['bookName'], result['bookId'], result['picPath']])
    workbook.save("计算机新书基本信息.xlsx")
    result = result['bookId']
    url = "https://www.ptpress.com.cn/bookinfo/getBookDetailsById"
    data = {
        'bookId': result
    }
    resp = requests.post(url, data=data)
    # print(resp)
    tans_dict = json.loads(resp.text)
    # 获取到价格
    # print(tans_dict['data']['discountPrice'])
    url = "https://www.ptpress.com.cn/order/getBookSaleStock"
    isbn = tans_dict['data']['photos'][0]['isbn']
    data = {'isbn': isbn}
    resp = requests.post(url, data=data)
    tans_dict1 = json.loads(resp.text)
    # 获取到库存信息
    worksheets2.append([name, tans_dict['data']['discountPrice'], tans_dict1['data']])
    workbook2.save('计算机类新书价格库存信息表.xlsx')
 

Python爬虫爬取书籍信息可以通过不同的方式实现,以下为几种常见方法及示例: ### 使用`requests`和`lxml`库爬取豆瓣读书Top250信息 此方法借助`requests`库发送HTTP请求获取网页内容,使用`lxml`库解析HTML内容。 ```python import fake_useragent import requests from lxml import etree if __name__ == '__main__': url = 'https://book.douban.com/top250?start={}' fp = open('./book - 250.txt', 'w', encoding='utf8') for i in range(0, 250, 25): book_url = url.format(i) res = requests.get(url=book_url, headers={ 'User - Agent': fake_useragent.UserAgent().random }) tree = etree.HTML(res.text) li_names = tree.xpath('//*[@id="content"]/div/div[1]/div/table') for names in li_names: book_name = names.xpath('.//div[@class="pl2"]/a/text()')[0] print(book_name.strip()) fp.write(book_name.strip() + '\n') fp.close() ``` 在上述代码里,先定义了目标URL的模板,接着通过循环来遍历所有页面。每次请求时,使用`fake_useragent`生成随机的`User - Agent`以模拟不同的浏览器。使用`lxml`的`xpath`方法提取书籍名称,并将其保存到本地文件中[^2]。 ### 使用`selenium`模拟浏览器爬取当当网图书信息 若网页是动态加载的,就可以使用`selenium`模拟浏览器操作来获取数据,同时结合`csv`库存储数据,`pymysql`库将数据存储到数据库。 ```python from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver import Chrome import csv import pymysql import os import requests # 后续可添加具体实现代码,如初始化浏览器、定位元素、解析数据、存储数据等操作 ``` 此代码先导入所需的库,后续可依据具体需求添加初始化浏览器、定位元素、解析数据、存储数据等操作,以实现爬取当当网图书信息的功能,包括图书编号、名称、作者、出版社等信息,并将数据存储到CSV文件和数据库中,同时下载图书图片到本地文件夹[^3]。 ### 利用`os.path`辅助存储爬取的数据 `os.path`模块可用于处理文件和目录的路径,保证路径的跨平台兼容性。在爬虫里,它常被用于构建本地文件系统的路径,以便保存从网络上下载的图片、文本数据等。例如在存储爬取的书籍信息到本地文件时,可以使用`os.path`来构建文件路径: ```python import os.path file_path = os.path.join(os.getcwd(), 'book_info.txt') with open(file_path, 'w', encoding='utf8') as f: # 这里可添加将爬取的书籍信息写入文件的代码 pass ``` 上述代码使用`os.path.join`方法构建文件路径,将爬取的书籍信息保存到当前工作目录下的`book_info.txt`文件中[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值