【问题标题】:How to convert a BeautifulSoup list array into a String?如何将 BeautifulSoup 列表数组转换为字符串?
【发布时间】:2026-01-24 05:25:02
【问题描述】:

我想用 BeautifulSoup 从网页中提取 4 个数字,以便稍后将这些值保存为 CSV 格式的字符串。

使用 BeautifulSoups findAll() 函数将值提取并保存到变量中可以正常工作。我需要的 4 个值在 <p> 标签内,带有 css 样式属性 "font-size: 13pt"。这些值保存在列表数组 linkData[] 中。

我只是不知道如何将这些变量保存在一行中作为字符串。现在,我总是遇到换行符,这是一个问题,因为我需要 CSV 输出为:var0,var1,var2,var3

代替:

var0
var1
var2
var3

我已经尝试了一些我在下面的代码中添加的东西。我几乎可以使用我的第三种方法,但不幸的是,如果我使用此选项,编码似乎是错误的。

我需要987, 1002, 278, 19,但 print() 的输出是(u'\n987\n', u'\n1002\n', u'\n278\n', u'\n19\n')。是否可以更改编码?

我对 BeautifulSoup 还很陌生,因此非常感谢任何帮助!

这是我的代码:

from bs4 import BeautifulSoup
import urllib2

opener = urllib2.build_opener()
opener.addheaders = [('User-Agent', 'Mozilla/5.0')]
response = opener.open('http://www.example.com')

html = response.read()
soup = BeautifulSoup(html, 'html.parser')

linkData = soup.findAll("p", {"style": "font-size: 13pt;"})

var0 = linkData[0].text
var1 = linkData[1].text
var2 = linkData[2].text
var3 = linkData[3].text

# Approach 1: Just print variables comma-separated
print var0, var1

# Approach 2: Using join to concatenate the variables 
linkDataList = [var0, var1, var2, var3]
str1 = ''.join(linkDataList)
print str1

# Approach 3: Use print() function
print(var0, var1, var2, var3)

最好的问候!

【问题讨论】:

  • 如打印输出所示,您的数据周围有换行符 (\n),所以只需剥离它:print(var0.strip(), var1.strip(), var2.strip(), var3.strip())
  • @zwer 非常感谢您的快速帮助,我现在可以正常工作了。如此简单的解决方法 :) EyuelDK 我不想透露那个特定的 URL,但我创建了一个带有不同 URL 的修改版本,供您在下面查看。希望有帮助!

标签: python arrays csv beautifulsoup


【解决方案1】:

在定义变量时,只需使用str.strip() 去除所有空格。

var0 = linkData[0].text.strip()
var1 = linkData[1].text.strip()
var2 = linkData[2].text.strip()
var3 = linkData[3].text.strip()

【讨论】:

  • 也感谢您的帮助!