python动态爬虫学习

知识点

requests库

requests.get(url=url,headers=headers,params=params)
//url对应要访问的页面链接
//headers为请求头
//params当携带参数时使用
url='https://www.ptpress.com.cn'
headers={
	"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.51",
    "Accept-Encoding": "gzip, deflate, br"}//格式
   params={
   "bookId":bookId}//格式,params在调用需要传递接口的链接时使用
res=requests.post(url=url,headers=headers,data=data)
//data格式与params类似
res.encoding//从http header中猜测响应的内容编码方式

json库

json.loads(request.get(···).text)
//将一段JSON 形式的字符串用 json.loads转换成python的数据结构,变成列表或字典,然后进行操作
json.load('文件名')
//操作整个文件对象,将整个文件对象里面的内容转化为json对象

openpyxl库

from  openpyxl import  Workbook //创建一个xlsx
wb=Workbook()//实例化
ws=wb.worksheets[0]//打开第一个sheet
ws.save("文件.xlsx")//保存表
ws.cell(,,内容)//向表中指定行列添加内容
ws['A1':'A2']//通过切片批量访问单元格
wb.create_sheet("sheet")//创建表
sheet.max_row//最大行
sheet.max_column//最大列
from openpyxl  import load_workbook
 wb2 = load_workbook('文件名称.xlsx')

爬取人民邮电出版社–精品力作板块的书籍信息

思路

1.找到返回bookId参数的url,在目标网页打开开发者模式(F12),如果第三步所在的板块无法看见,先在检查模式下刷新网页,然后找出对应的名称,标头中对应的url即为当前板块的真实链接,在底部还可以找到对应的User-Agent。
在这里插入图片描述
2.获取返回值,切换到预览部分,将返回data转为字典或列表模式,获取bookName和bookId。
3.任意打开一本书,找到对应的接口url,以及携带的参数(在负载部分查看),接着按照第2步的方法继续进行。
4.保存到xlsx文件中
在这里插入图片描述

代码

import requests
import json
from openpyxl import Workbook

wb = Workbook()//实例化
ws = wb.worksheets[0]
url = r'https://www.ptpress.com.cn/masterpiece/getMasterpieceListForPortal'//真实链接
header = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.51",
    "Accept-Encoding": "gzip, deflate, br"
}//请求头
res = requests.get(url=url, headers=header)
res.encoding = 'utf-8'
result = json.loads(res.text)
lists = []
for i in result["data"]:
    list_one = []
    bookId, bookName = i["bookId"], i["bookName"]
    # print("bookId:"+bookId)
    url_price = "https://www.ptpress.com.cn/bookinfo/getBookDetailsById"
    book_data = {
        "bookId": bookId
    }
    res_one = requests.post(url=url_price, data=book_data)
    result_one = json.loads(res_one.text)
    isbn, date, price, author = result_one['data']["bookDetail"]["data"]['isbn'], \
                                result_one['data']["bookDetail"]["data"]['publishDate'], result_one['data'][
                                    'discountPrice'], result_one['data']['author']
    list_one.append(bookName)
    list_one.append(isbn)
    list_one.append(date)
    list_one.append(price)
    list_one.append(author)
    lists.append(list_one)
for list in lists:
    for i in list:
        ws.cell(lists.index(list) + 1, list.index(i) + 1, i)
wb.save("书籍详情.xlsx")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值