import requests
import csv
from bs4 import BeautifulSoup
data_list=[]
page_number=1
while page_number<4:
# 设置要请求的网页链接
url='https://wp.forchange.cn/resources/page/'+str(page_number)
# 请求网页
res=requests.get(url)
# 解析请求到的网页内容
bs=BeautifulSoup(res.text,'html.parser')
# 搜索网页中所有包含书籍名和书籍链接的 Tag
tag_list=bs.find_all('a',class_="post_title")
# 使用 for 循环遍历搜索结果
for tag in tag_list:
# 创建字典,用以存储书籍信息
info={}
# 提取书籍名
info['书名']=tag.text
# 提取书籍链接
book_url=tag['href']
# 通过书籍链接请求书籍详情页
res_url=requests.get(book_url)
# 解析书籍详情页的内容
book_bs=BeautifulSoup(res_url.text,'html.parser')
# 搜索网页中所有包含书籍各项信息的 Tag
tag_lists=book_bs.find('div',class_="rest-attrs").find_all('dl')
# 使用 for 循环遍历搜索结果
for tag_1 in tag_lists:
# 提取信息的提示项
key=tag_1.find('dt').text[:-2]
# 提取信息的内容
value=tag_1.find('dd').text
# 将信息添加到字典中
info[key]=value
# 存储每本书籍的信息
print(info)
data_list.append(info)
# 页码 page_number 自增
page_number+=1
with open ('books.csv','w',newline='')as f:
# 将文件对象转换成 DictWriter 对象
writer=csv.DictWriter(f,fieldnames=['书名','作者','出版社','ISBN','页数','出版年','定价'])
# 写入表头与数据
writer.writeheader()
writer.writerows(data_list)