|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import requests
import csv
from bs4 import BeautifulSoup
# 设置列表,用以存储每本书籍的信息
data_list = []
# 设置页码 page_number
page_number = 1
# while 循环的条件设置为 page_number 的值是否小于 4
while page_number < 4:
url = 'https://wp.forchange.cn/resources/page/' + str(page_number)
# 设置要请求的网页链接
Totalrequests = requests.get(url)
# 请求网页
Requestweb = BeautifulSoup(Totalrequests.text, 'html.parser')
Requestweb.encoding = 'utf-8'
# 解析请求到的网页内容
Webpage = Requestweb.find_all('a', class_='post-title')
# 搜索网页中所有包含书籍名和书籍链接的 Tag
# 使用 for 循环遍历搜索结果
for info in Webpage:
# 创建字典,用以存储书籍信息
info_dist = {}
# 提取书籍名
info_dist['书名'] = info.text
# 提取书籍链接
info1dist = info['href']
# 通过书籍链接请求书籍详情页
Bookdetails = requests.get(info1dist)
# 解析书籍详情页的内容
Bookparsing = BeautifulSoup(Bookdetails.text, 'html.parser')
Bookparsing.encoding = 'utf-8'
# 搜索网页中所有包含书籍各项信息的 Tag
information = Bookparsing.find('div', class_='res-attrs').find_all('dl')
# 使用 for 循环遍历搜索结果
for info in information:
# 提取信息的提示项
key = info.find('dt').text[:-2]
# 提取信息的内容
value = info.find('dd').text
# 将信息添加到字典中
info_dist[key] = [value]
print(info_dist)
# 存储每本书籍的信息
data_list.append(info_dist)
# 页码 page_number 自增
page_number += 1
# 新建 csv 文件存储书籍信息
with open('ctvs.csv','w',newline='') as f:
# 将文件对象转换成 DictWriter 对象
e = ['书名', '作者', '出版社', 'ISBN', '页数', '出版年', '定价']
d = csv.DictWriter(f, fieldnames=e)
# 写入表头与数据
d.writeheader()
d.writerows(data_list)
本帖最后由 isdkz 于 2022-3-3 13:24 编辑
编码问题,在打开文件那里加个编码格式。
你可以看一下这篇文章:https://m.yisu.com/zixun/150340.html
故对你的代码修改如下:import requests
import csv
from bs4 import BeautifulSoup
# 设置列表,用以存储每本书籍的信息
data_list = []
# 设置页码 page_number
page_number = 1
# while 循环的条件设置为 page_number 的值是否小于 4
while page_number < 4:
url = 'https://wp.forchange.cn/resources/page/' + str(page_number)
# 设置要请求的网页链接
Totalrequests = requests.get(url)
# 请求网页
Requestweb = BeautifulSoup(Totalrequests.text, 'html.parser')
Requestweb.encoding = 'utf-8'
# 解析请求到的网页内容
Webpage = Requestweb.find_all('a', class_='post-title')
# 搜索网页中所有包含书籍名和书籍链接的 Tag
# 使用 for 循环遍历搜索结果
for info in Webpage:
# 创建字典,用以存储书籍信息
info_dist = {}
# 提取书籍名
info_dist['书名'] = info.text
# 提取书籍链接
info1dist = info['href']
# 通过书籍链接请求书籍详情页
Bookdetails = requests.get(info1dist)
# 解析书籍详情页的内容
Bookparsing = BeautifulSoup(Bookdetails.text, 'html.parser')
Bookparsing.encoding = 'utf-8'
# 搜索网页中所有包含书籍各项信息的 Tag
information = Bookparsing.find('div', class_='res-attrs').find_all('dl')
# 使用 for 循环遍历搜索结果
for info in information:
# 提取信息的提示项
key = info.find('dt').text[:-2]
# 提取信息的内容
value = info.find('dd').text
# 将信息添加到字典中
info_dist[key] = [value]
print(info_dist)
# 存储每本书籍的信息
data_list.append(info_dist)
# 页码 page_number 自增
page_number += 1
# 新建 csv 文件存储书籍信息
with open('ctvs.csv','w',newline='',encoding='utf-8-sig') as f: # 这一行加了encoding='utf-8-sig'
# 将文件对象转换成 DictWriter 对象
e = ['书名', '作者', '出版社', 'ISBN', '页数', '出版年', '定价']
d = csv.DictWriter(f, fieldnames=e)
# 写入表头与数据
d.writeheader()
d.writerows(data_list)
|
-
错误信息
|