2016-06-20 54 views
-2

好的,我已經能夠從網站上抓取我需要的信息,清理並按照我想要的方式進行格式化。問題是我需要一行描述和價格。我已經能夠做到這一點,但縮進空格。我無法弄清楚如何清理它在一條線上。我需要在Python中清理一行信息

任何幫助表示讚賞

感謝

import requests 
from bs4 import BeautifulSoup 
import csv 

b = open ('canadianappliances.csv', 'a', newline='') 
a = csv.writer(b, delimiter=',') 


r = requests.get("http://www.canadianappliance.ca/Refrigerators-And-Fridges-3/Full-Size-Refrigerators-38/French-Door-Refrigerators-48/?per_page=all") 

r.content 

soup = BeautifulSoup(r.content, "lxml") 


g_data = soup.find_all("h2", {"class": "product_link"}) 
p_data = soup.find_all("td", {"class": "pi-price-final"}) 

for item in g_data: 
    print(item.get_text(strip=True).replace("\n", " ")) 

for price in p_data: 
    print(price.get_text(strip=True).replace("\n", " ")) 

for g, p in zip(g_data, p_data): 
    print(g.text, p.text) 
+0

你可以將它們一起壓縮成一個元組,然後迭代元組。 –

+0

你正在使用哪個版本的python? –

+0

對不起,剛添加了zip。我需要將拉鍊放在一條線上。我正在使用Python 3.5 – nobb666

回答

1

刮下g_datap_data的文本值對雙方有很多的空白。您需要刪除它們以在一行中打印每個項目。像:

>>> for g,p in zip(g_data, p_data): 
...  print g.text.strip().replace('\n',' '), p.text.strip() 
... 
Samsung - RF220NCTASR $1,397.72 
Samsung - RF18HFENBSR $1,599.00 
Samsung - RF23HCEDBSR $2,179.92 
Samsung - RF28HMEDBSR $2,498.78 
# and it goes on and on and on 

我使用Python 2.7,如果你想知道其中print語句的括號去了。

+0

謝謝,這是有效的。 – nobb666