BeautifulSoup и CSV: разделитель после каждого персонажа - PullRequest
0 голосов
/ 14 февраля 2019

Я хотел почистить страницу википедии и написать все заголовки h2 без тегов в csv.Я подумал, что это простое задание для начинающих.

Теперь у меня проблема, что после каждого символа в CSV ставится точка с запятой.

Мой код:

from bs4 import BeautifulSoup
import requests
import csv

url = "https://de.wikipedia.org/wiki/%C3%84gypten"
r = requests.get(url).content


soup = BeautifulSoup(r, 'lxml')

for h2 in soup.find_all('h2'):
    # Output is okay
    print(h2.get_text())

    with open('Daten/Test.csv', mode='a') as csv_file:
        write_h2 = csv.writer(csv_file, delimiter=';')
        write_h2.writerow(h2)

Вывод в CSV выглядит следующим образом:

I;n;h;a;l;t;s;v;e;r;z;e;i;c;h;n;i;s

ܻb;e;r;b;l;i;c;k

L;a;n;d;e;s;n;a;m;e

G;e;o;g;r;a;p;h;i;e

B;e;v;��k;e;r;u;n;g

G;e;s;c;h;i;c;h;t;e

P;o;l;i;t;i;k

M;i;l;i;t;伲

V;e;r;w;a;l;t;u;n;g;s;g;l;i;e;d;e;r;u;n;g

S;o;z;i;a;l;e; ;L;a;g;e

W;i;r;t;s;c;h;a;f;t

T;o;u;r;i;s;m;u;s; ;u;n;d; ;V;e;r;k;e;h;r

K;u;l;t;u;r

L;i;t;e;r;a;t;u;r

W;e;b;l;i;n;k;s

E;i;n;z;e;l;n;a;c;h;w;e;i;s;e

N;a;v;i;g;a;t;i;o;n;s;m;e;n;�

Я очень новичок в программировании, поэтому я был бы благодарен, если ваш ответ легко понять для новичка.

вывод на консоль работает хорошо.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Вам нужно передать строку h2.get_text() в виде списка

Таким образом, вы должны заменить последнюю строку:

with open('Daten/Test.csv', mode='a') as csv_file:
    write_h2 = csv.writer(csv_file, delimiter=';')
    write_h2.writerow([h2.get_text()])
0 голосов
/ 14 февраля 2019

Автор принимает список в качестве входных данных, поэтому вы должны передать список строк, если вы передадите строку, она будет считаться списком символов.

См. Пример ниже:

from bs4 import BeautifulSoup
import requests
import csv

url = "https://de.wikipedia.org/wiki/%C3%84gypten"
r = requests.get(url).content


soup = BeautifulSoup(r, 'lxml')

for h2 in soup.find_all('h2'):
    # Output is okay
    h2_text = h2.get_text()

    with open('Daten/Test.csv', mode='a') as csv_file:
        write_h2 = csv.writer(csv_file, delimiter=';')
        write_h2.writerow([h2_text])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...