【发布时间】: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