Python 2.7:如何分离提取的文本?

时间:2018-02-11 14:12:06

标签: python python-2.7 csv beautifulsoup

我正在使用带有美丽汤的Python 2.7来从URL获取一些文本,但我想将每行中提取的文本分开。

这是我从URL中提取文本并将输出放在CSV文件中的方法:

# import libraries
import csv
import urllib2
from bs4 import BeautifulSoup

# specify the url
url = 'http://www.bkfrem.dk/default.asp?id=19'

# query the website and return the html to the variable ‘page’
page = urllib2.urlopen(url)

# parse the html using beautiful soup and store in variable soup
soup = BeautifulSoup(page, 'html.parser')

# create CSV file
csvfile = csv.writer(open('firsteam.csv', 'w'))
csvfile.writerow(('Name', 'Position', 'Height', 'Weight', 'Born', 'Image'))

# take out the <div> of name and get its value
items = soup.find_all('div', attrs={'class': 'visTruppenContainer'})

for i in range(len(items)):

    playerInfo = items[i].getText(separator=u' ')
    imageURL = items[1].find('img')['src']
    csvfile.writerow([playerInfo.encode('iso8859-15'), imageURL])
    print (playerInfo)
    print (imageURL)

基本上我得到的是('Name', 'Position', 'Height', 'Weight', 'Born')在一行(同一列),而playerInfo和imageURL在另一行(同一列)。我想要实现的目标是首先将('Name', 'Position', 'Height', 'Weight', 'Born')分开,以便它们各自得到一个列。接下来,我想分割我提取的数据,使它们属于相应的列。

这就是输出现在的样子: enter image description here

这是我想要实现的目标: enter image description here

1 个答案:

答案 0 :(得分:2)

您应该以不同方式解析您阅读的项目:

for i in range(len(items)):

    playerInfo = items[i].getText(separator=u'%').encode('iso8859-15').split('%')
    imageURL = items[1].find('img')['src']
    csvfile.writerow(playerInfo + [imageURL])
    print (playerInfo)
    print (imageURL)