Попытка очистить данные, хранящиеся в таблице, используя BeautifulSoup Python - PullRequest
1 голос
/ 09 марта 2020

Я пытаюсь очистить данные из этой таблицы введите описание изображения здесь и вот код, который я использую

## Scraping data for schools
from urllib.request import urlopen
from bs4 import BeautifulSoup

#List of schools
page=urlopen('https://mcss.knack.com/school-districts#all-school-contacts/')
soup = BeautifulSoup(page,'html.parser')

School=[]
Address=[]
Phone=[]
Principal=[]
Email=[]
District=[]

# Indexing rows and then identifying cells
for rows in soup.findAll('tr'):
    cells = rows.findAll('td')
    if len(cells)==7:
        School.append(soup.find("span", {'class':'col-0'}).text)
        Address.append(soup.find("span", {'class':'col-1'}).text)
        Phone.append(soup.find("span", {'class':'col-2'}).text)
        Principal.append(soup.find("span", {'class':'col-3'}).text)
        Email.append(soup.find("span", {'class':'col-4'}).text)
        District.append(soup.find("span", {'class':'col-5'}).text)

import pandas as pd
school_frame = pd.DataFrame({'School' : School,
                           'Address' : Address,
                           'Phone':Phone,
                           'Principal':Principal,
                           'Email':Email,
                           'District':District
                            })

school_frame.head()
#school_frame.to_csv('school_address.csv')

И взамен я получаю только заголовок имена столбцов фрейма данных.

Что я делаю не так?

1 Ответ

0 голосов
/ 09 марта 2020

Когда вы проверите фактическое значение page, вы увидите, что оно не содержит никакой таблицы, но содержит пустой div, который позже будет динамически заполнен на javascript. urllib.request не запускает javascript и просто возвращает пустую страницу без таблицы. Вы можете использовать селен для эмуляции браузера (который запускает javascript), а затем получить полученный html этого сайта (см. этот ответ stackoverflow для примера).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...