2577257443 发表于 2022-3-2 20:10:45

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

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='') as f:
    # 将文件对象转换成 DictWriter 对象
    e = ['书名', '作者', '出版社', 'ISBN', '页数', '出版年', '定价']
    d = csv.DictWriter(f, fieldnames=e)
    # 写入表头与数据
    d.writeheader()
    d.writerows(data_list)

isdkz 发表于 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 =
      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)

阿萨德按时 发表于 2022-3-3 09:18:07

{:10_256:}

别吃我饼干 发表于 2022-3-3 10:54:18

{:10_250:}

2577257443 发表于 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 ...

感谢大佬但我这个为啥还是报错啊

isdkz 发表于 2022-3-3 17:30:46

2577257443 发表于 2022-3-3 17:23
感谢大佬但我这个为啥还是报错啊

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

2577257443 发表于 2022-3-3 17:45:39

isdkz 发表于 2022-3-3 17:30
你现在执行的是 main.py,而你改的是 爬虫闪光读书.py

好的,感谢大佬{:5_92:}
页: [1]
查看完整版本: 这个爬虫错误在哪啊,纯新手 请大佬们帮忙指正怎么改