我正在使用带有美丽汤的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')
分开,以便它们各自得到一个列。接下来,我想分割我提取的数据,使它们属于相应的列。
答案 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)