【问题标题】:Python3 web scraping, csv output showing TypeError: can only concatenate list (not "str") to listPython3 网页抓取,csv 输出显示 TypeError: can only concatenate list (not "str") to list
【发布时间】:2020-09-25 11:22:51
【问题描述】:

我正在抓取网页并将其输出存储到 CSV 文件中。如果我只是在终端上输出结果,它可以正常工作,但是当我尝试将 f.write() 写入 CSV 文件时,它会给出错误 TypeError: can only concatenate list (not "str") to list

示例代码:

desc = []
for desc_tag in soup.find_all("div", {"class": "card-body"}):
desc.append(desc_tag.text)

如果我执行 print(desc),它会在我的终端上提供所需的输出,但是当我这样做时

f.write(srcs + ", " + titles + ", " + desc + ", " + urls + "\n")

我得到 TypeError: can only concatenate list (not "str") to list

srcs、titles、desc、URLs 它们都是一样的,只是为了方便我只添加了 desc,但所有的语法都与我上面的示例代码相同。

我用于创建 CSV/和输出的代码

out_filename = "bookmarks_design.csv"
headers = "image,title,description,link \n"
f = open(out_filename, "w")
f.write(headers)

关于如何解决这个问题的任何指示? 谢谢

【问题讨论】:

  • srcstitlesdescurls的值是多少?例如,您能显示print(srcs) 的输出吗?
  • print(titles) ['Dixon', 'Regan, 'Tinypng', 'Coddrops', 'Creative Portfolios', 'AI']
  • 我什至试过 #Converting string to list bd_titles =titles.strip('][').split(', ') 但我得到一个错误 AttributeError: 'list' object has no attribute 'strip '
  • 这些是列表。你把f.write放在一个循环里。
  • titles 不是包含][, 的字符串。它是一个字符串列表。您可以使用其索引来访问每个字符串,例如titles[0]titles[1] 等。

标签: python-3.x web-scraping beautifulsoup


【解决方案1】:

srcstitlesdescurls 是列表。要将它们的内容写入文件(使用f.write),您需要一个循环:

for i in range(len(srcs)):
    f.write(srcs[i] + ", " + titles[i] + ", " + desc[i] + ", " + urls[i] + "\n")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-02
    • 2021-04-26
    • 1970-01-01
    • 2022-11-01
    • 2019-05-26
    • 2020-11-21
    • 1970-01-01
    • 2022-10-23
    相关资源
    最近更新 更多