|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)
复制代码
|
-
错误信息
|