Преобразование таблицы, полученной с веб-страницы html, в pandas фрейм данных - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь получить таблицу с веб-страницы и преобразовать ее в фрейм данных для использования в анализе. Я использовал пакет BeautifulSoup для очистки URL-адреса и анализа информации таблицы, но я не могу экспортировать информацию в фрейм данных. Мой код ниже:

from bs4 import BeautifulSoup as bs
from urllib import request

source = urllib.request.urlopen("https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M").read()
soup = bs(source, "html.parser")

table = soup.table

table_rows = table.find_all("tr")

for tr in table_rows:
    td = tr.find_all("td")
    row = [i.text for i in td]
    print(row)

Делая это, я могу видеть каждую строку, но я не уверен, как преобразовать ее в df. Есть идеи?

Ответы [ 2 ]

1 голос
/ 25 мая 2020

попробуйте это.

from bs4 import BeautifulSoup as bs
from urllib.request import urlopen
import pandas as pd

source = urlopen("https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M").read()
soup = bs(source, "html.parser")

table = soup.table

table_rows = table.find_all("tr")

postal_codes = []

for tr in table_rows:
    td = tr.find_all("td")
    row = [ i.text[:-1] for i in td]
    postal_codes.append(row)
    #print(row)

postal_codes.pop(0)

df = pd.DataFrame(postal_codes, columns=['PostalCode', 'Borough', 'Neighborhood'])

print(df)
0 голосов
/ 25 мая 2020

вы можете использовать pandas read_html

# read's all the tables & return as an array, pick the data table that meets your need

table_list = pd.read_html("https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M")

print(table_list[0])

  Postal Code           Borough               Neighborhood
0         M1A      Not assigned                        NaN
1         M2A      Not assigned                        NaN
2         M3A        North York                  Parkwoods
3         M4A        North York           Victoria Village
...