2016-05-18 2 views
0

У вас возникли проблемы с форматированием cvs в одну строку с запятой после того, как первый набор текста будет схвачен с веб-сайта, а затем за цену. То, что я пытаюсь сделать, это иметь информацию о продукте и цену на одну строку, разделенную запятой после информации о продукте, чтобы ее можно было импортировать в электронную таблицу Excel. Любые подсказки? благодаряPython форматирует файл csv в одну строку

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() 

ответ

0

Ваш запрос в порядке, фильтрация с BeautifulSoup нет.

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

Извините, на самом деле я не получаю контент, который отображается с этим. – nobb666

+0

Вау, я просто протестировал здесь и работает! –

+0

Я опубликовал весь свой код. Я использую Python 3.5, если это имеет значение. Все еще ничего не отображается – nobb666

Смежные вопросы