这个爬虫错误在哪啊,纯新手 请大佬们帮忙指正怎么改
import requestsimport 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 =
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 =
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) {:10_256:} {:10_250:} 本帖最后由 2577257443 于 2022-3-3 17:26 编辑
isdkz 发表于 2022-3-3 09:04
编码问题,在打开文件那里加个编码格式。
你可以看一下这篇文章:https://m.yisu.com/zixun/150340.html ...
感谢大佬但我这个为啥还是报错啊 2577257443 发表于 2022-3-3 17:23
感谢大佬但我这个为啥还是报错啊
你现在执行的是 main.py,而你改的是 爬虫闪光读书.py
isdkz 发表于 2022-3-3 17:30
你现在执行的是 main.py,而你改的是 爬虫闪光读书.py
好的,感谢大佬{:5_92:}
页:
[1]