2015-09-29 3 views
-1

Я написал скрипт Python для очистки некоторых продуктов, пока я могу получить все, что мне нужно, но я зациклился на том, как сохранить эти значения в csv.Запись вывода в формате csv в python

Вот мой код Python:

import requests 
from bs4 import BeautifulSoup 

mainPage = requests.get("http://mega.pk/mobiles/") 
soup = BeautifulSoup(mainPage.content, "html5lib") 

for link in soup.select("ul.asidemenu_h1 a[href*=http://www.mega.pk/mobiles-]"): 
    #link.get_text() 

    urls = [link.get('href')] 

    for url in urls: 
     brandPage = requests.get(url) 
     soup = BeautifulSoup(brandPage.content, "html5lib") 

     for productPage in soup.select("div.lap_thu_box div.image a[href*=http://www.mega.pk/mobiles_products/]"): 
      productUrls = [productPage.get('href')] 

      for productUrl in productUrls: 
       productPage = requests.get(productUrl) 
       soup = BeautifulSoup(productPage.content, "html5lib") 

       for productName in soup.select("div.col-md-8.col-sd-8.col-xs-8 div.padding-10 div h2 span"): 
        print (productName.get_text()) 

       for productDesc in soup.select("div#main1 div div div div.row div div p"): 
        print (productDesc.get_text()) 

       for productPrice in soup.select("div#main1 div div div div.row div div div div.price-n-action div span.desc-price"): 
        print (productPrice.get_text()) 

и, пожалуйста, скажите мне, как улучшить мой код, я довольно новыми для питона. Прежде чем я написал этот скрипт, я использовал scrappy, который был очень быстрым (занял 1 минуту, чтобы сделать все), но я хочу использовать python-3 (который занимает не менее 5-7 минут). Хотя время не является основной проблемой. Сохранение элементов в csv важно.

+0

Не знаете, как ваш код имеет значение. Вы просто хотите распечатать файл, который есть много почитания, нет? http://stackoverflow.com/questions/6159900/correct-way-to-write-line-to-file-in-python – ergonaut

+0

Я просто дал код, чтобы каждый мог понять, что я делаю, я абсолютно уверен, что полный код не имеет значения , –

ответ

2

Используйте csv library.

import csv 
with open('desired-filename-here.csv', 'w', newline='') as csvfile: 
    csvwriter = csv.writer(csvfile, delimiter=' ', 
          quotechar='|', quoting=csv.QUOTE_MINIMAL) 
    row_info = [productName.get_text(), productDesc.get_text(), 
       productPrice.get_text()] 
    csvwriter.writerow(row_info) 
2

В качестве альтернативы CSV, вы всегда можете скачать pandas

import pandas as pd 
myData = {} 

... заполнить словарь ...

output = pd.DataFrame(myData) 
output.to_csv('output_data.csv') 

предоставил есть существующие решения, которые не делают вам нужно что-либо загрузить, но я, безусловно, считаю, что панды удобны, и это особенно удобно при организации данных быстро: ^)

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