Как хранить данные таблицы в формате csv с помощью Beautifulsoup - PullRequest
0 голосов
/ 11 мая 2018

Я просто не могу понять, как мне поступить.

Все, что я хочу сделать, это извлечь все данные таблицы и сохранить их в CSV-файле. Я получил данные из таблицы, но я изо всех сил пытаюсь отформатировать данные, чтобы я мог записать их в CSV-файл.

Помощь или совет о том, как справиться с этим, очень ценится.

Это HTML:

  <div id="wpgmza_marker_holder_3" class='wpgmza_marker_holder'
   style="width:100%;">
<table id="wpgmza_table_3" class="wpgmza_table responsive" cellspacing="0" cellpadding="0" style="width:100%;">
  <thead>
    <tr>
      <th class='wpgmza_table_marker'><strong></strong></th>
      <th class='wpgmza_table_title
      all'><strong>Bezeichnung</strong></th>
      <th class='wpgmza_table_category'><strong>Kategorie</strong></th>
      <th class='wpgmza_table_address'><strong>Adresse</strong></th>
      <th class='wpgmza_table_description'><strong>Beschreibung</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr id="wpgmza_marker_1346" mid="1346" mapid="3" class="wpgmaps_mlist_row">
      <td class='wpgmza_table_marker' height="40"><img class="wpgmza_marker_icon " src="https://i1.wp.com/lebensmitteltechnik-deutschland.com/wp-content/uploads/2016/04/Getränketechnik.png?w=584&#038;ssl=1" style="margin: 5px auto;" data-recalc-dims="1" /></td>
      <td class='wpgmza_table_title all'>100 Blumen Brauerei GmbH</td>
      <td class='wpgmza_table_category'>Getränketechnologie </td>
      <td class='wpgmza_table_address'>Endresstraße 18 1230 Wien, Österreich</td>
      <td class='wpgmza_table_description'></td>
    </tr>
    <tr id="wpgmza_marker_1187" mid="1187" mapid="3" class="wpgmaps_mlist_row">
      <td class='wpgmza_table_marker' height="40"><img class="wpgmza_marker_icon " src="https://i0.wp.com/lebensmitteltechnik-deutschland.com/wp-content/uploads/2016/04/Lebensmitteltechnik.png?w=584&#038;ssl=1" style="margin: 5px auto;" data-recalc-dims="1" /></td>
      <td class='wpgmza_table_title all'>11er Nahrungsmittel GmbH</td>
      <td class='wpgmza_table_category'>Lebensmitteltechnik </td>
      <td class='wpgmza_table_address'>Galinastraße 34 6820 Frastanz, Österreich</td>
      <td class='wpgmza_table_description'></td>
    </tr>

import os
import csv
from bs4 import BeautifulSoup


f = csv.writer(open('outputFile.csv','w'))
f.writerow(['Company Name','Category','Adress'])

path = "C:/Users/trond/OneDrive/Dokumente/01 Tech/01 Python"
file_name = os.path.join(path, "text.txt")
my_file = open("text.txt", encoding="utf-8")
my_file_contents = my_file.read()


plain_text = my_file_contents
soup = BeautifulSoup(plain_text, "html.parser")

for company_name in soup.findAll('td', {'class': 'wpgmza_table_title all'}):
    print(company_name.string)

for company_category in soup.findAll('td', {'class': 'wpgmza_table_category'}):
    print(company_category.string)
 
for company_address in soup.findAll('td', {'class': 'wpgmza_table_address'}):
    print(company_address.string)

    
f.writerow(['company_name.string','company_category.string', 'company_adress.string']

1 Ответ

0 голосов
/ 11 мая 2018

Вам необходимо сохранить названия компаний, категории и адреса в списках, а затем вы можете записать строки в файл CSV.

Т.е. вы можете сохранить названия компаний в списке, например так:

company_names = []
for company_name in soup.findAll('td', {'class': 'wpgmza_table_title all'}):
    company_names.append(company_name.string)

А затем категории и адреса:

company_categories = []
for company_category in soup.findAll('td', {'class': 'wpgmza_table_category'}):
    company_categories.append(company_category.string)

company_addresses = []
for company_address in soup.findAll('td', {'class': 'wpgmza_table_address'}):
    company_addresses.append(company_address.string)

И затем вы можете использовать эти списки для записи строк в файл CSV, используя цикл for:

for i in range(len(company_names)):
    f.writerow([company_names[i], company_categories[i], company_adresses[i]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...