鱼C论坛

 找回密码
 立即注册
查看: 1172|回复: 6

[已解决]这个爬虫错误在哪啊,纯新手 请大佬们帮忙指正怎么改

[复制链接]
发表于 2022-3-2 20:10:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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)
最佳答案
2022-3-3 09:04:56
本帖最后由 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)

错误信息

错误信息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-3 09:04:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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)

评分

参与人数 1荣誉 +5 鱼币 +3 贡献 +2 收起 理由
2577257443 + 5 + 3 + 2 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-3 09:18:07 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-3 10:54:18 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-3 17:23:32 | 显示全部楼层
本帖最后由 2577257443 于 2022-3-3 17:26 编辑
isdkz 发表于 2022-3-3 09:04
编码问题,在打开文件那里加个编码格式。

你可以看一下这篇文章:https://m.yisu.com/zixun/150340.html ...


感谢大佬  但我这个为啥还是报错啊
报错内容.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-3 17:30:46 | 显示全部楼层
2577257443 发表于 2022-3-3 17:23
感谢大佬  但我这个为啥还是报错啊


你现在执行的是 main.py,而你改的是 爬虫闪光读书.py

172600m7tntnod3rz3mren.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-3 17:45:39 | 显示全部楼层
isdkz 发表于 2022-3-3 17:30
你现在执行的是 main.py,而你改的是 爬虫闪光读书.py

好的,感谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 06:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表