Py学习  »  Python

如何使用漂亮的soup和python为纳斯达克网站中的表提取HTML代码

Mohamed Suhail Irfan Khazi • 4 年前 • 1103 次点击  

所以基本上,我想在下面的链接中读取这个表的HTML代码: https://www.nasdaq.com/symbol/aapl/revenue-eps

为了做到这一点,我用了巨蟒和漂亮的汤。

import urllib
from bs4 import BeautifulSoup
import csv
url = urllib.urlopen("https://www.nasdaq.com/symbol/aapl/revenue-eps")
mylist = []
soup = BeautifulSoup(url,"html.parser")
my_table = soup.find('table',{'class':'ipos'})
print(my_table)

上面的代码是我所尝试的。当我右键单击并选择检查表时,我找到的表名称为“ipos”,但当我试图将其放入此代码中时,它似乎不起作用。我得到的唯一输出是“无”

我已经用另一个站点测试过了,它运行得很好。当我使用该链接并使用该HTML代码中表的名称时,我就能够完美地获得该表的HTML代码。然而,这一点并非如此。对此,任何帮助都将不胜感激。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38120
 
1103 次点击  
文章 [ 2 ]  |  最新文章 4 年前
salman wahed
Reply   •   1 楼
salman wahed    4 年前

表加载到 iframe . 如果检查此页发出的网络请求,则会发现如下请求:

https://fundamentals.nasdaq.com/redpage.asp?selected=AAPL&market=NASDAQ-GS&LogoPath=https%3a%2f%2fwww.nasdaq.com%2flogos%2fAAPL.GIF&coname=Apple%20Inc.

这是将表加载到此页的URL。使用上面的URL可以找到表。

import urllib
from bs4 import BeautifulSoup
import csv
url = urllib.urlopen("https://fundamentals.nasdaq.com/redpage.asp?selected=AAPL&market=NASDAQ-GS&LogoPath=https%3a%2f%2fwww.nasdaq.com%2flogos%2fAAPL.GIF&coname=Apple%20Inc.")
mylist = []
soup = BeautifulSoup(url,"html.parser")
my_table = soup.find('table',{'class':'ipos'})
print(my_table)
Andrej Kesely
Reply   •   2 楼
Andrej Kesely    4 年前

你看到的桌子在 <iframe> . 加载此内容 <iframe> 您可以使用此脚本:

import requests
from bs4 import BeautifulSoup

url = "https://www.nasdaq.com/symbol/aapl/revenue-eps"
soup = BeautifulSoup(requests.get(url).text,"html.parser")

iframe_url = soup.select_one('iframe#frmMain')['src']

requests.packages.urllib3.disable_warnings()
soup = BeautifulSoup(requests.get(iframe_url, verify=False).text,"html.parser")

table = soup.select_one('table.ipos')

for tr in table.select('tr'):
    for td in tr.select('td'):
        print('{: <30}'.format(td.get_text(strip=True)), end='')
    print()

印刷品:

Revenue / EPS Summary *                                     Revenue / EPS Summary *                                     
                              Revenue / EPS Summary *                                     


Fiscal Quarter                                              2019(Fiscal Year)                                           2018(Fiscal Year)                                           2017(Fiscal Year)             


December                                                                                                                
Revenue                       $84,310(m)                    $88,293(m)                    $78,351(m)                    
EPS                           4.18 (12/29/2018)             3.89 (12/30/2017)             3.36 (12/31/2016)             
Dividends                     0.73                          0.63                          0.57                          

March                                                                                                                   
Revenue                       $58,015(m)                    $61,137(m)                    $52,896(m)                    
EPS                           2.48 (3/30/2019)              2.74 (3/31/2018)              2.1 (4/1/2017)                
Dividends                     0.77                          0.73                          0.63                          

June                                                                                                                    
Revenue                       $53,809(m)                    $53,265(m)                    $45,408(m)                    
EPS                           2.2 (6/29/2019)               2.36 (6/30/2018)              1.68 (7/1/2017)               
Dividends                     0.77                          0.73                          0.63                          

September  (FYE)                                                                                                        
Revenue                                                     $62,900(m)                    $52,579(m)                    
EPS                                                         2.92 (9/29/2018)              2.07 (9/30/2017)              
Dividends                                                   0.73                          0.63                          


Totals                                                                                                                  
Revenue                       $196,134(m)                   $265,595(m)                   $229,234(m)                   
EPS                           8.86                          11.91                         9.21                          
Dividends                     2.27                          2.82                          2.46                          

Previous 3 Years