Я собираю данные из URL-адресов, содержащих различное количество вложенных таблиц различного размера, и пытаюсь сопоставить информацию из этих таблиц в CSV-файл.Например, один URL-адрес: http://www.bird -hybrids.com / reference.php? Id = 424 & nomenclature = cinfosci .
Первые три строки идеального вывода (всего 11 строк дляэтот URL)
species, species, species, environment, Authors, Title, Editor, Journal, Year, Volume, Number, Starting Page, Ending Page,
Agriocharis ocellata, Meleagris gallopavo, --, captivity, Ghigi A., Il tachino ocellato, Pages 354-385 in Galline di faraone e tacchini AND Milano AND Ulrico Hoepli AND 1936, --, 1936, --, --, --, --,
Agriocharis ocellata, Meleagris gallapavo, --, captivity, Lorenz F. W. AND Asmundson V.S. AND Wilson N.E., Turkey Hybrids, --, Journal of Heredity, 1956, 47, 3, 142, 146
Я не могу понять, как сопоставить эти таблицы HTML различного размера с документом CSV с предварительно определенной информацией заголовка.К усложняющим факторам относятся: 1) запятые в исходных строках HTML-таблицы должны быть заменены на «И». 2) Язык заголовков меняется с английского на французский и должен быть на английском.
Я не знаюНе знаю, потому ли это, что мой подход в корне ошибочен (может быть, для моей цели может быть лучше модуль / программное обеспечение), или мне не хватает синтаксиса.
Я попытался использовать BeautifulSoup и pandas.
У меня есть код
#import modules
import requests
import pandas as pd
from bs4 import BeautifulSoup
#define URL
res = requests.get("http://www.bird-hybrids.com/references.php?id=424&nomenclature=cinfosci")
#read html
soup = BeautifulSoup(res.content, 'lxml')
#extract all tables
table = soup.find_all('table')[0]
df = pd.read_html(str(table))
Возвращает вывод в виде
[ 0
0 liste des références espèce espèce espèce envi..., 0 ... 3
0 espèce ... environnement
1 Agriocharis ocellataAgriocharis ocellata ... captivité
[2 rows x 4 columns], 0 ... 6
0 Auteurs ... Ghigi A.
1 Titre ... Il tachino ocellato
2 Éditeur ... Pages 354-385 in Galline di faraone e tacchini...
3 Journal ... --
4 Année ... NaN
5 1936 ... NaN
[6 rows x 7 columns], 0 ... 6
0 Auteurs ... Lorenz F. W. , Asmundson V. S. , Wilson N. E.
1 Titre ... Turkey hybrids
2 Éditeur ... --
3 Journal ... Journal of Heredity
4 Année ... NaN
5 1956 ... NaN
Я думаю, что структура этих таблиц - 1 контрольно-пропускной пункт, не позволяющий мне преобразовать в CSV, потому что я хочу рассматривать только определенные строки таблицы как столбцы («1936» и «1956» должны быть значениями в той же строке, что и Annee).
Я думаю, что окончательное решение может быть некоторым изменением df[0].to_csv()
Но я не хочу указывать количество таблиц в URL (потому что каждый URL имеет различное количество таблиц), и это не предопределяет заголовки.