如何将BeautifulSoup列表数组转换为字符串?

时间:2017-05-20 23:53:49

标签: python arrays csv beautifulsoup

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

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

我只是不知道如何将这些变量作为String保存在一行中。现在,我总是得到换行符,这是一个问题,因为我需要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)

祝你好运!

1 个答案:

答案 0 :(得分:1)

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

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