Поиск конкретной таблицы с веб-сайта по строке с помощью панд - PullRequest
0 голосов
/ 10 июля 2019

Изображение таблицы

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

Я использую запросы для открытия URL-адреса и pandas.html для извлечения таблиц.Однако, делая это, я либо извлекаю все таблицы или определенную таблицу по индексу, и я хочу найти способ извлечь только таблицу с моим ключевым словом.

import requests
import pandas as pd

#url is the website, html opens the site and df_list is extracting all tables

url = 'https://www.sec.gov/Archives/edgar/data/880432/000114420415073214/v427721_def14a.htm'

html = requests.get(url).content

df_list = pd.read_html(html)

Отсюда я могу напечатать df_list[index] но я хочу таблицу с моим ключевым словом.Я пробовал следующее: (ничего не возвращает)

for i in range(len(df_list)):
    if 'Fees Earned' in df_list:
        print (df_list[i])

for i in range(len(df_list)):
    if any("Fees Earned" in s for s in df_list):
        print(df_list[i])

Если я попытаюсь:

print(any(sub in mystring for mystring in mylist))

Я получу только вывод "False"

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Это должно дать вам таблицу:

import bs4 as BeautifulSoup

soup = BeautifulSoup(html)
table = soup.select_one('table:contains("Fees Earned")')

Чтобы преобразовать его в кадр данных панд:

df = pd.read_html(str(table))

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

0 голосов
/ 11 июля 2019

Может быть, это будет работать:

for df in df_list:
   new_df=df.dropna(how='all').dropna(axis=1,how='any')
   if "Fees Earned" in str(df.iloc[:,:]):
        print(new_df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...