报错解决TypeError: write() argument must be str, not list

2023-10-27

今天写爬虫的时候遇到的问题:

将抓取的数据保存下来的时候报错:TypeError: write() argument must be str, not list。字面意思是write写入的应该是str类型的数据,而不是一个list类型的数据,回到代码中

            for i in range(0,num):
                try:
                    title1 = title1_list[i].replace("】","")
                    title2 = title2_list[i].replace("\n","")
                    name1 = title1 + title2
                    product_dict = {
                        "product_name": name1,
                        "product_id": product_id_list[i]
                    }
                    product_list.append(product_dict)
                except:
                    pass
                print("保存的数据为:",product_list)
            product_list = json.dumps(product_list,ensure_ascii=False,indent=2)
            return pages,product_list

 检查发现保存前已经使用dumps转化格式了,那为什么还是会显示保存的是列表呢,保存之前的数据打印一下保存的数据看一下发现了原因

获取到的数据为空,所以才没有保存数据。找到问题所在解决起来就很轻松了,只要加入一个判断的条件,判断抓取的数据是否为空就可以了,代码如下:

data = self.product_html
        # print(data)
        data = etree.HTML(data)
        #商品数量
        try:
            product_num = data.xpath('//*[@id="content"]/div[1]/div/div[1]/p/em/text()')[0]
        except:
            # 出现滑块,需要拖动滑块
            drop_block = DropBlock()
            drop_block.drop_block(url)
            product_num = data.xpath('//*[@id="content"]/div[1]/div/div[1]/p/em/text()')[0]
        if int(product_num) == 0:
            pages = 0
            list1 = {
                "product_name": "Null",
                "product_id": "Null"
            }
            list1 = json.dumps(list1,ensure_ascii=False,indent=2)
            return pages,list1

首先获取到商品详情页的数据是否为0,这是唯一可以辨别商品数据为空的数据,因为空数据的页数也会显示为1,所以这里采用商品数量作为判断商品数量是否为空的依据

所以现在只需要在保存数据前加入判断的条件就可以了。将空的列表替换成指定的数据,这样就不会造成空列表保存不了的情况了,最后记得返回空的数据之前也要使用dumps转化哦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

报错解决TypeError: write() argument must be str, not list 的相关文章

  • 将 JSON 发布到 Python CGI

    我已经安装了 Apache2 并且 Python 可以工作 但我有一个问题 我有两页 一个是 Python 页面 另一个是带有 JQuery 的 Html 页面 有人可以告诉我如何让我的 ajax 帖子正常工作吗
  • 在 Python 2.7 中出现“ImportError:无法导入名称 HTTPSConnection”错误

    我正在尝试在 AWS ElasticBeanstalk 中部署 django 当我按照所示步骤操作时here http docs aws amazon com elasticbeanstalk latest dg create deploy
  • Python 转换矩阵

    我有一个如下所示的列表 2 1 3 1 2 3 1 2 2 2 我想要的是一个转换矩阵 它向我显示如下序列 1 后跟 1 的频率是多少 1 后面跟着 2 的频率是多少 1 后跟 3 的频率是多少 2 后跟 1 的频率是多少 2 后跟 2 的
  • Flask 中“缺少 CSRF 令牌”,但它在模板中呈现

    问题 当我尝试登录 使用 Flask login 时 我得到Bad Request The CSRF session token is missing但令牌正在呈现 在模板中 secret key 已设置 并且我在本地运行localhost
  • 使用 NumPy 编写一个函数来计算具有特定公差的积分

    我想编写一个自定义函数来以特定容差对表达式 python 或 lambda 函数 进行数字积分 我知道与scipy integrate quad人们可以简单地改变epsabs但我想使用 numpy 自己编写该函数 From 这篇博文 htt
  • App Engine NDB:如何访问属性的 verbose_name

    假设我有这个代码 class A ndb Model prop ndb StringProperty verbose name Something m A m prop a string value 当然 现在如果我打印 m prop 它会
  • 使用 subprocess.Popen() 或 subprocess.check_call() 时程序卡住

    我想从 python 运行一个程序并找到它的内存使用情况 为此 我正在使用 l a out lt in txt gt out txt p subprocess Popen l shell False stdout subprocess PI
  • 数据框中 .map(str) 和 .astype(str) 有什么区别

    我有一个数据框 其列名为 col1 和 col2 的整数类型条目 我想将 col1 和 col2 的条目以及其间的 点 连接起来 我搜索并发现添加两个列条目 df col df col1 map str df col2 map str 并添
  • Python-验证我的文档 xls 中是否存在工作表

    我正在尝试在空闲时间设计一个小程序 加载 xls 文件 然后在要扫描的文档中选择一张纸 步骤1 用户导入 xls文件 导入程序后检查文件是否存在 我能做到的 第 2 步 我要求用户提供要分析的文档表 xls 的名称 这就是它停止的地方 该程
  • Python:在字典中查找具有唯一值的键?

    我收到一个字典作为输入 并且想要返回一个键列表 其中字典值在该字典的范围内是唯一的 我将用一个例子来澄清 假设我的输入是字典 a 构造如下 a dict a cat 1 a fish 1 a dog 2 lt unique a bat 3
  • 无法使用 python rasterio、gdal 打开 jp2 (来自哨兵)

    我试图在 python 中将 jp2 栅格产品作为栅格打开 但当我们使用 raterio 和 gdal 包时没有成功 我收到此错误 RasterioIOError b4 jp2 not recognized as a supported f
  • python Recipe:列出最接近等于值的项[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 考虑像这样的列表 0 3 7 10 12 15 19 21 我想获得最接近任何值的最近的最小数字 所以如果我通过4 我会得到3 如果我
  • 如何在matplotlib中调整x轴

    I have a graph like this x轴上的数据表示小时 所以我希望x轴设置为0 24 48 72 而不是现在的值 很难看到 0 100 之间的数据 fig1 plt figure ax fig1 add subplot 11
  • 无法导入QUERY_TERMS

    我正在运行一个网站Python and Django Django filters 2 1 installed Django 2 1 installed 当我运行时 我收到以下错误 importError Could not import
  • 从迭代器外部将 StopIteration 发送到 for 循环

    有几种方法可以打破一些嵌套循环 他们是 1 使用中断 继续 for x in xrange 10 for y in xrange 10 print x y if x y gt 50 break else continue only exec
  • 无需访问 Internet 即可部署 Django 的简单方法?

    我拥有的是使用 Django 开发的 Intranet 站点的开发版本以及放置在 virtualenv 中的一些外部库 它运行良好 我可以在任何具有互联网连接的计算机上使用相同的参数 使用 pip 轻松设置 virtualenv 但是 不幸
  • Python 相当于 Scala 案例类

    Python 中是否有与 Scala 的 Case Class 等效的东西 就像自动生成分配给字段而无需编写样板的构造函数一样 当前执行此操作的现代方法 从 Python 3 7 开始 是使用数据类 https www python org
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • 如何使用 Python/Django 在 Facebook 中获取(和使用)扩展权限

    我正在尝试编写一个简单的应用程序 让用户授予我的代码写入其页面的 Facebook 流的权限 据我了解 它应该很简单 让用户单击一个按钮 启动一个弹出窗口 其中包含我的 Facebook 应用程序中的页面 在该页面中 他们单击授予的内容流发
  • MoviePY 无法在 Windows 上检测 ImageMagick 二进制文件

    我刚买了一台新笔记本电脑 想要设置MoviePY在那新的Windows 64x Python3 7 0 机器 我对所有内容都进行了三次检查 但是当涉及到我的代码的文本部分时 它向我抛出了这个错误 OSError MoviePy Error

随机推荐

  • vscode 永久关闭安全提示

    最新版本的vscode 在打开项目时会提示如下 如果选择了不信任 之后你会发现好多插件直接都不能显示了 像open in browser等等 这是 1 57 版本的新功能 可以通过调整 security workspace trust en
  • 为 Docker 配置镜像加速器(解决 TLS handshake timeout 问题)

    问题 当我们下载并安装完 Docker Desktop for Windows 运行 Docker 快速入门 一 情况介绍和安装 中的示例命令 docker run hello world 时 可能会遇到如下的问题 PS C Users R
  • Jquery点击切换播放不同的Flv视频文件

    原理就是先将所有视频隐藏 然后点击图片后根据显示对应ID的视频 FlV视频部分 div div
  • maven-metadata.xml文件的作用

    原文链接 https blog csdn net lipei1220 article details 88947555 总结 解决相同版本号 修改时间不同 如何获取最新内容 过程 maven在build后从maven服务器Downloadi
  • 【正点原子STM32连载】第二十六章 TFTLCD(MCU屏)实验 摘自【正点原子】APM32F407最小系统板使用指南

    1 实验平台 正点原子stm32f103战舰开发板V4 2 平台购买地址 https detail tmall com item htm id 609294757420 3 全套实验源码 手册 视频下载地址 http www openedv
  • P1025 [NOIP2001 提高组] 数的划分(dfs搜有顺序)

    NOIP2001 提高组 数的划分 洛谷 include
  • 网络数据包的抓包(解析数据包内容)

    使用原始套接字接收 recvfrom reav read等 时 可以接收到完整的数据包 数据组装 拆解过程 数字代表上层协议的类型 完整数据包为 传输数据包内容 链路层包头 网络层包头 传输层包头 应用层数据 Ethernet MAC 封包
  • Python 面向对象(一)

    0 OOP Python面向对象 Python面向对象 面向对象编程 基础 公有私有 继承 组合 Mixin 魔法函数 魔法函数概述 构造类魔法函数 运算类魔法函数 1 面向对象概述 ObjectOriented OO OOP思想 接触到任
  • python每日一题

    写两个函数 分别求两个整数的最大公约数和最小公倍数 用主函数调用这两个函数 并输出结果两个整数由键盘输入 输入格式 两个数 输出格式 最大公约数 最小公倍数 样例输入 6 15 样例输出 3 30 注 gcd 最大公约数 lcm 最小公倍数
  • sql数据库中的 delete 与drop的区别

    数据库中的delete 与drop的区别 从下面的例子开始 delete delete from 表名 where 条件 drop alter table 表名 drop 字段 drop table 表 有的同学从从上面的例子 可以看出来
  • Java常用类:BigInteger和BigDecimal类

    目录 1 BigInteger类 2 BigDecimal类 1 BigInteger类 当需要很大的整数 long不够用时 可以使用BigInteger类来搞定 1 在对BigInteger 进行加减乘除时 需要使用对应的方法 2 可以创
  • .NET 6 VS2022连接WebService 生成代理客户端代码

    NET 6 VS2022连接WebService 生成代理客户端代码 VS2022安装 WCF Windows Communication Foundation 首先我们得安装WCF连接工具 搜索WCF并安装 安装完毕后启动VS2022 W
  • 华为OD机试真题- 递增字符串【2023Q1】【JAVA、Python、C++】

    题目描述 定义字符串完全由 A 和 B 组成 当然也可以全是 A 或全是 B 如果字符串从前往后都是以字典序排列的 那么我们称之为严格递增字符串 给出一个字符串s 允许修改字符串中的任意字符 即可以将任何的 A 修改成 B 也可以将任何的
  • [SHELL] shell 实现多进程后,如何等待所有进程结束

    1 gt 多进程实现 主要方法是使用 符号 将命令fork到后台执行 2 gt 等待结束的方法 2 1 使用 wait 命令 bin bash sleep 10 echo 1 gt gt s lock sleep 12 echo 1 gt
  • 计算机网络基础 1.0 -- 概述

    概念理解 报文 在网络中发送的数据块成为报文 在发送报文之前 通常会把数组分组 每个组都有个包头和数据组成 包头中包含了诸如目标地址和源地址等重要信息 这样才保证了数据能够有目的的在网络中的传输 主机是用户用来处理信息的 而路由器则是用来转
  • springboot 整合logback,设置日志的输出路径

    一 logback配置相对路径 项目实战中 配置成这种模式 打成jar包执行 生成的logs目录和jar包在同一目录下 即平级状态 1 1 配置成logs 查看效果 1 2 配置成 logs 1 配置成 logs 2 生成结果 工程所在磁盘
  • Win10 wsl-安装教程

    一 安装原生Win10 1 网上随便找一个win10版本 制作成U盘启动 并完成安装 2 安装原生的win10 上述方案安装的win10不是原生的 存在各种问题 进入win10操作系统 下载最新的 MediaCreationTool 工具
  • webpack-----前端必会高频面试题

    webpack学习总结 面试题 1 什么是webpack 静态模块打包工具 2 webpack作用 分析 压缩 打包代码 3 webpack好处 减少文件体积 减少文件数量 提高网页加载速度 4 webpack工作流程 1 初始化参数 从配
  • 一个人再牛,最终还是要靠团队

    软件行业个人英雄主义时代已经渐渐远去 在CS以及自由软件盛行的年代 确实造就了许多的软件英雄 如今的互联网 时代 我们只能去怀念他们 无论是创业还是软件平台的研发与运营 我们都在强调着团队 马云再牛 没有十八罗汉 他也只不过是一个到处吹牛到
  • 报错解决TypeError: write() argument must be str, not list

    今天写爬虫的时候遇到的问题 将抓取的数据保存下来的时候报错 TypeError write argument must be str not list 字面意思是write写入的应该是str类型的数据 而不是一个list类型的数据 回到代码