【问题标题】:Unable to find HTML table with Python using BeautifulSoup无法使用 BeautifulSoup 找到带有 Python 的 HTML 表
【发布时间】:2020-05-29 05:18:22
【问题描述】:

我无法找到类为 table-light border rounded 的 HTML 表。大家知道为什么会这样吗?

这是我的尝试:

import requests
from bs4 import BeautifulSoup

url = "https://iextrading.com/trading/eligible-symbols/"
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
table = soup.find('table', class_ = 'table-light border rounded')
print(table) # returns "None"

注意,soup 对象/变量中没有 table 标记。但是,在查看网页时,确实有一个table 标签。我似乎找不到它。

非常感谢任何帮助或指导。我正在尝试创建符号列表。

有关更多信息,请参阅以下屏幕截图:

【问题讨论】:

    标签: html python-3.x web-scraping beautifulsoup python-requests


    【解决方案1】:

    正如 Swapnil 提到的,您从 api 请求中获取该数据。现在为什么他没有更进一步并实际提供解决方案来完全获得桌子,我不确定。

    但该 api 以 json 格式返回数据。所以就是把json读进去,然后用pandas转成表格:

    import requests
    import pandas as pd
    
    url = 'https://iextrading.com/api/mobile/refdata'
    
    jsonData = requests.get(url).json()
    
    df = pd.DataFrame(jsonData)
    

    输出:

    print (df)
                                Issuer Symbol        date isEnabled lit
    0         AGILENT TECHNOLOGIES INC      A  2020-05-28         1   1
    1                       ALCOA CORP     AA  2020-05-28         1   1
    2     PERTH MINT PHYSICAL GOLD ETF   AAAU  2020-05-28         1   1
    3      ATA CREATIVITY GLOBAL - ADR   AACG  2020-05-28         1   1
    4      ADVISORSHARES DORSEY WRIGHT   AADR  2020-05-28         1   1
    5      AMERICAN AIRLINES GROUP INC    AAL  2020-05-28         1   1
    6      ALTISOURCE ASSET MANAGEMENT   AAMC  2020-05-28         1   1
    7           ATLANTIC AMERICAN CORP   AAME  2020-05-28         1   1
    8                      AARON'S INC    AAN  2020-05-28         1   1
    9      APPLIED OPTOELECTRONICS INC   AAOI  2020-05-28         1   1
    10                        AAON INC   AAON  2020-05-28         1   1
    11          ADVANCE AUTO PARTS INC    AAP  2020-05-28         1   1
    12                       APPLE INC   AAPL  2020-05-28         1   1
    13       AMERICAN ASSETS TRUST INC    AAT  2020-05-28         1   1
    14        ALMADEN MINERALS LTD - B    AAU  2020-05-28         1   1
    15    ATLAS AIR WORLDWIDE HOLDINGS   AAWW  2020-05-28         1   1
    16    ISHARES MSCI ALL COUNTRY ASI   AAXJ  2020-05-28         1   1
    17             AXON ENTERPRISE INC   AAXN  2020-05-28         1   1
    18    ALLIANCEBERNSTEIN HOLDING LP     AB  2020-05-28         1   1
    19                ABB LTD-SPON ADR    ABB  2020-05-28         1   1
    20                      ABBVIE INC   ABBV  2020-05-28         1   1
    21          AMERISOURCEBERGEN CORP    ABC  2020-05-28         1   1
    22                  AMERIS BANCORP   ABCB  2020-05-28         1   1
    23         ABEONA THERAPEUTICS INC   ABEO  2020-05-28         1   1
    24      ABSOLUTE CORE STRATEGY ETF   ABEQ  2020-05-28         1   1
    25                    AMBEV SA-ADR   ABEV  2020-05-28         1   1
    26         ASBURY AUTOMOTIVE GROUP    ABG  2020-05-28         1   1
    27              ARCA BIOPHARMA INC   ABIO  2020-05-28         1   1
    28              ABM INDUSTRIES INC    ABM  2020-05-28         1   1
    29                     ABIOMED INC   ABMD  2020-05-28         1   1
                               ...    ...         ...       ...  ..
    8806  ZK INTERNATIONAL GROUP CO LT   ZKIN  2020-05-28         1   1
    8807               ZAI LAB LTD-ADR   ZLAB  2020-05-28         1   1
    8808   ZOOM VIDEO COMMUNICATIONS-A     ZM  2020-05-28         1   1
    8809  DIREXION ZACKS MLP HIGH INCO   ZMLP  2020-05-28         1   1
    8810            ZION OIL & GAS INC     ZN  2020-05-28         1   1
    8811              ZYNGA INC - CL A   ZNGA  2020-05-28         1   1
    8812  CHINA SOUTHERN AIR-SPONS ADR    ZNH  2020-05-28         1   1
    8813  ZENTALIS PHARMACEUTICALS INC   ZNTL  2020-05-28         1   1
    8814                                ZNWAA  2020-05-28         1   1
    8815  ZOMEDICA PHARMACEUTICALS COR    ZOM  2020-05-28         1   1
    8816  PIMCO 25+ YR ZERO CPN US TIF   ZROZ  2020-05-28         1   1
    8817                   ZSCALER INC     ZS  2020-05-28         1   1
    8818            ZOSANO PHARMA CORP   ZSAN  2020-05-28         1   1
    8819   PROSHARES ULTRASHORT SILVER    ZSL  2020-05-28         1   1
    8820                                ZTEST  2020-05-28         1   1
    8821    ZTO EXPRESS CAYMAN INC-ADR    ZTO  2020-05-28         1   1
    8822  VIRTUS TOTAL RETURN FUND INC    ZTR  2020-05-28         1   1
    8823                    ZOETIS INC    ZTS  2020-05-28         1   1
    8824                    ZUMIEZ INC   ZUMZ  2020-05-28         1   1
    8825           ZUORA INC - CLASS A    ZUO  2020-05-28         1   1
    8826                     ZOVIO INC    ZVO  2020-05-28         1   1
    8827                                  ZVV  2020-05-28         1   1
    8828                                 ZVVV  2020-05-28         1   1
    8829                                ZVZZT  2020-05-28         1   1
    8830                                ZWZZT  2020-05-28         1   1
    8831                                ZXIET  2020-05-28         1   1
    8832                                ZXZZT  2020-05-28         1   1
    8833                 ZYMEWORKS INC   ZYME  2020-05-28         1   1
    8834   ZYNERBA PHARMACEUTICALS INC   ZYNE  2020-05-28         1   1
    8835                     ZYNEX INC   ZYXI  2020-05-28         1   1
    
    [8836 rows x 5 columns]
    

    【讨论】:

    • 谢谢!您只是在 type:'xhr' (name:ping) 之后对所有请求进行了反复试验,还是只是在网络选项卡中知道 type:'fetch' (name:'refdata') 一样简单? jc
    • 有点。如果您转到开发工具并查看 Network -> XHR(听起来就像您所做的那样),您可以单击 Preview 选项卡。然后,我要做的就是单击 XHR 名称,直到我看到我正在寻找的数据。然后转到Headers 选项卡以获取 url、参数等。在这种情况下,很容易查看一些 XHR。如果有很多,有时我会使用搜索功能来搜索一些应该是 teh dat 一部分的唯一字符串,并以这种方式找到它(但通过与开发工具描述的相同过程)。这有意义吗?
    【解决方案2】:

    可能是页面加载后使用 js 渲染元素的情况。所以,你只得到页面而不是 javascript 呈现的部分。

    我个人指的是硒。

    您可能想查看https://medium.com/@hoppy/how-to-test-or-scrape-javascript-rendered-websites-with-python-selenium-a-beginner-step-by-c137892216aa

    【讨论】:

      【解决方案3】:

      该站点正在使用 xhr 请求加载数据,您必须从“网络”选项卡中检查它们并找出它们从何处加载数据。

      在您的情况下,他们正在从 Here 加载数据

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-11
        • 1970-01-01
        • 2023-02-06
        • 2015-10-04
        • 2012-04-04
        • 2016-05-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多