2015-12-02 6 views
0

В настоящее время я изучаю python в школе и играю с BeautifulSoup, и это было довольно просто. Теперь я пытаюсь экспортировать список, используя модуль csv для python, но он не работает так, как я этого хочу. Вот мой код:python CSV module - только получение одной ячейки заполнено

import csv 
import requests 
from bs4 import BeautifulSoup 
import pprint 
import sys 

url = 'http://www.yellowpages.com/search?search_terms=restaurants&geo_location_terms=Charleston%2C%20SC' 
response = requests.get(url) 
html = response.content 

soup = BeautifulSoup(html, "html.parser") 
g_data = soup.find_all("div", {"class": "info"}) #this isolates the big chunks of data which houses our child tags 
for item in g_data: #iterates through big chunks  
    try: 
     eateryName = (item.contents[0].find_all("a", {"class": "business-name"})[0].text) 
    except: 
     pass 

    print(eateryName) 
with open('csvnametest.csv', "w") as csv_file: 
    writer = csv.writer(csv_file) 
    writer.writerow([eateryName]) 

Я получаю все имена ресторана (в качестве доказательства с помощью функции печати), но когда я открываю документ Excel он просто имеет фамилию в списке вместо имен всех , Я пытался приобщить eateryName но потом он помещает все имена в одном коде cell.enter здесь

+0

Когда вы работаете с csv в Python, я предлагаю вам использовать 'pandas'. Это сделает вашу жизнь намного проще. – burhan

ответ

0

Вы можете попробовать это:

with open('csvnametest.csv', "w") as csv_file: 
    writer = csv.writer(csv_file) 
    for row in eateryName: 
     writer.writerow(row) 
0

кажется, что вы пытаетесь выписывать цельные список в CSV. Вы должны сделать следующее вместо:

import csv 
import requests 
from bs4 import BeautifulSoup 
import pprint 
import sys 

url = 'http://www.yellowpages.com/search?search_terms=restaurants&geo_location_terms=Charleston%2C%20SC' 
response = requests.get(url) 
html = response.content 

soup = BeautifulSoup(html, "html.parser") 
g_data = soup.find_all("div", {"class": "info"}) #this isolates the big chunks of data which houses our child tags 
for item in g_data: #iterates through big chunks  
    try: 
     eateryName = (item.contents[0].find_all("a", {"class": "business-name"})[0].text) 
    except: 
     pass 

    print(eateryName) 
    with open('csvnametest.csv', "wa") as csv_file: 
     writer = csv.writer(csv_file) 
     writer.writerow([eateryName]) 

Причина заключается в том, что ваша запись находится за пределами цикла, так что вы только написать последнюю запись, и ваша запись имеет только «вес», который пишет только снова и оленья кожа Append.

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