【发布时间】:2014-06-20 13:14:52
【问题描述】:
我希望提取一个城市相对于多个城市的生活成本变化。我计划在 CSV 文件中列出我想比较的城市,并使用此列表创建 Web 链接,将我带到包含我正在寻找的信息的网站。
这里是一个例子的链接:http://www.expatistan.com/cost-of-living/comparison/phoenix/new-york-city
不幸的是,我遇到了一些挑战。非常感谢对以下挑战的任何帮助!
- 输出仅显示百分比,但不显示更贵或更便宜。对于上面列出的示例,我基于当前代码的输出显示 48%、129%、63%、43%、42% 和 42%。我试图通过添加一个“if-statement”来纠正这个问题,如果它更昂贵,则添加“+”符号,或者如果它更便宜,则添加一个“-”符号。但是,此“if 语句”无法正常运行。
- 当我将数据写入 CSV 文件时,每个百分比都会写入一个新行。我似乎无法弄清楚如何将其写成一行。
- (与第 2 项相关)当我将数据写入上面列出的示例的 CSV 文件时,数据以下面列出的格式写入。如何更正格式并将数据写入下面列出的首选格式(也没有百分号)?
当前 CSV 格式(注意:'if-statement' 无法正常工作):
City,Food,Housing,Clothes,Transportation,Personal Care,Entertainment
n,e,w,-,y,o,r,k,-,c,i,t,y,-,4,8,%
n,e,w,-,y,o,r,k,-,c,i,t,y,-,1,2,9,%
n,e,w,-,y,o,r,k,-,c,i,t,y,-,6,3,%
n,e,w,-,y,o,r,k,-,c,i,t,y,-,4,3,%
n,e,w,-,y,o,r,k,-,c,i,t,y,-,4,2,%
n,e,w,-,y,o,r,k,-,c,i,t,y,-,4,2,%
首选 CSV 格式:
City,Food,Housing,Clothes,Transportation,Personal Care,Entertainment
new-york-city, 48,129,63,43,42,42
这是我当前的代码:
import requests
import csv
from bs4 import BeautifulSoup
#Read text file
Textfile = open("City.txt")
Textfilelist = Textfile.read()
Textfilelistsplit = Textfilelist.split("\n")
HomeCity = 'Phoenix'
i=0
while i<len(Textfilelistsplit):
url = "http://www.expatistan.com/cost-of-living/comparison/" + HomeCity + "/" + Textfilelistsplit[i]
page = requests.get(url).text
soup_expatistan = BeautifulSoup(page)
#Prepare CSV writer.
WriteResultsFile = csv.writer(open("Expatistan.csv","w"))
WriteResultsFile.writerow(["City","Food","Housing","Clothes","Transportation","Personal Care", "Entertainment"])
expatistan_table = soup_expatistan.find("table",class_="comparison")
expatistan_titles = expatistan_table.find_all("tr",class_="expandable")
for expatistan_title in expatistan_titles:
percent_difference = expatistan_title.find("th",class_="percent")
percent_difference_title = percent_difference.span['class']
if percent_difference_title == "expensiver":
WriteResultsFile.writerow(Textfilelistsplit[i] + '+' + percent_difference.span.string)
else:
WriteResultsFile.writerow(Textfilelistsplit[i] + '-' + percent_difference.span.string)
i+=1
【问题讨论】:
标签: python python-2.7 csv beautifulsoup