我想从带有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)
祝你好运!
答案 0 :(得分:1)
在定义变量时,只需使用str.strip()
删除所有空格。
var0 = linkData[0].text.strip()
var1 = linkData[1].text.strip()
var2 = linkData[2].text.strip()
var3 = linkData[3].text.strip()