Чтение таблицы HTML NASDAQ на фрейме данных - PullRequest
0 голосов
/ 13 января 2019

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

Есть идеи, как этого достичь? Спасибо

Парсинг последней компании NASDAQ

    from bs4 import BeautifulSoup
    import requests

    r=requests.get('https://www.nasdaq.com/screening/companies-by 
    industry.aspx 
    exchange=NASDAQ&sortname=marketcap&sorttype=1&pagesize=4000')
    data = r.text
    soup = BeautifulSoup(data, "html.parser")
    table = soup.find( "table", {"id":"CompanylistResults"} )
    for row in table.findAll("tr"):
        for cell in row("td"):
            print (cell.get_text().strip())

1 Ответ

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

Похоже, вы ищете метко названный read_html , хотя вам нужно поиграть, пока вы не получите то, что хотите. В вашем случае:

>>> import pandas as pd
>>> df=pd.read_html(table.prettify(),flavor='bs4')[0]
>>> df.columns = [c.strip() for c in df.columns]

См. Вывод ниже.

Первая строка - это то, что выполняет работу, а вторая просто удаляет все эти надоедливые пробелы и новые строки в вашем заголовке. Похоже, что есть скрытый ADR TSO, который кажется бесполезным, так что вы можете сбросить его, если не знаете, что это такое. Может также иметь смысл отбрасывать все четные строки, поскольку они, насколько я могу судить, являются просто продолжением нечетных строк и бесполезных ссылок. В единственной строке:

>>> df = df.drop(['ADR TSO'], axis=1) #Drop useless column
>>> df1= df[::2] #To get rid of even rows
>>> df2= df[~df['Name'].str.contains('Stock Quote')].head() #By string filtration if we are not sure about the odd/even thing

Вывод оригинальной головы только для шоу:

>>> df.head()
                                                Name Symbol Market Cap  \
0                                   Amazon.com, Inc.   AMZN   $802.18B
1  AMZN Stock Quote  AMZN Ratings  AMZN Stock Report    NaN        NaN
2                              Microsoft Corporation   MSFT   $789.12B
3  MSFT Stock Quote  MSFT Ratings  MSFT Stock Report    NaN        NaN
4                                      Alphabet Inc.  GOOGL    $740.3B

   ADR TSO        Country IPO Year  \
0      NaN  United States     1997
1      NaN            NaN      NaN
2      NaN  United States     1986
3      NaN            NaN      NaN
4      NaN  United States      n/a

                                         Subsector
0                   Catalog/Specialty Distribution
1                                              NaN
2          Computer Software: Prepackaged Software
3                                              NaN
4  Computer Software: Programming, Data Processing

Выход очищенных df.head():

                    Name Symbol Market Cap        Country IPO Year  \
0       Amazon.com, Inc.   AMZN   $802.18B  United States     1997
2  Microsoft Corporation   MSFT   $789.12B  United States     1986
4          Alphabet Inc.  GOOGL    $740.3B  United States      n/a
6          Alphabet Inc.   GOOG   $735.24B  United States     2004
8             Apple Inc.   AAPL    $720.3B  United States     1980

                                         Subsector
0                   Catalog/Specialty Distribution
2          Computer Software: Prepackaged Software
4  Computer Software: Programming, Data Processing
6  Computer Software: Programming, Data Processing
8                           Computer Manufacturing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...