2016-05-18 4 views
0

Probleme beim Formatieren eines CVS in eine Zeile mit einem Komma, nachdem der erste Satz Text von einer Website und dann den Preis abgerufen wurde. Was ich versuche zu tun, ist die Produktinfo und der Preis in einer Zeile, getrennt durch ein Komma nach der Produktinfo, so dass es in eine Excel-Tabelle importiert werden kann. Irgendwelche Hinweise? DankPython-Format eine CSV-Datei zu einer Zeile

import requests 
from bs4 import BeautifulSoup 
import csv 

b6 = open('sears.csv', 'w', newline='') 
a6 = csv.writer(b6,delimiter=',') 

soup = BeautifulSoup(requests.get("http://www.sears.ca/catalog/appliances-fridges-freezers-refrigerators-top-freezer-en-wp-836#facet:&productBeginIndex:0&orderBy:&pageView:grid&minPrice:&maxPrice:&pageSize:100&").text) 

g6_data = soup.select("div.product_name a") 
p6_data = soup.select("div.product_price") 

for g6, p6 in zip(g6_data, p6_data): 
    c6 = (g6.text, p6.text) 
    print(g6.text, p6.text) 
    a6.writerow(c6) 

b6.close() 

Antwort

0

Ihre Anfrage ist in Ordnung, die Filterung mit BeautifulSoup nicht.

import requests 
from BeautifulSoup import BeautifulSoup 

soup = BeautifulSoup(requests.get("http://www.sears.ca/catalog/appliances-fridges-freezers-refrigerators-top-freezer-en-wp-836#facet:&productBeginIndex:0&orderBy:&pageView:grid&minPrice:&maxPrice:&pageSize:100&").text) 

g_descrs = [i.find("a").text for i in soup.findAll("div", {"class": "product_name", "itemprop": True})] 
g_prices = [i.find("input").get('value') for i in soup.findAll("div", {"class": "product_price"})] 

rows = map(lambda x: '%s;%s' % x, zip(g_descrs, g_prices)) 

with open('./result.csv', 'w') as result: 
    for row in rows: 
     result.write(row) 
+0

Sorry, ich bekomme eigentlich keinen Inhalt, der damit angezeigt wird. – nobb666

+0

Wow, ich habe gerade hier getestet und funktioniert! –

+0

Ich habe meinen gesamten Code gepostet. Ich verwende Python 3.5, wenn das wichtig ist. Immer noch mit nichts auftaucht – nobb666

Verwandte Themen