【问题标题】:Getting html table with BeautifulSoup使用 BeautifulSoup 获取 html 表
【发布时间】:2021-08-29 04:39:40
【问题描述】:

我似乎无法从该页面的表格中获取行数据:https://www.saudiexchange.sa/wps/portal/tadawul/market-participants/issuers/issuers-directory?locale=en

这是我的代码:

url = requests.get('https://www.saudiexchange.sa/wps/portal/tadawul/market-participants/issuers/issuers-directory?locale=en')
soup = BeautifulSoup(url.content, 'html.parser')
tables = soup.find_all('table', attrs={"id": "companiesListTable"})
tables

我哪里错了?

【问题讨论】:

  • 数据是动态加载的,所以直接从API获取。检查 API 端点的网络连接。

标签: python python-3.x beautifulsoup


【解决方案1】:

您正在寻找动态加载的表,以便您可以从网络选项卡调用端点

如何找到:

进入 chrome 开发者模式,找到网络选项卡并重新加载网站,您还可以在搜索中找到数据复制粘贴数据,以及在包含您的数据的最后一个 URL 中,如 json 格式。

import requests
import pandas as pd

url = requests.get('https://www.saudiexchange.sa/wps/portal/tadawul/market-participants/issuers/issuers-directory/!ut/p/z1/04_Sj9CPykssy0xPLMnMz0vMAfIjo8zi_Tx8nD0MLIy8DTyMXAwczVy9vV2cTY0MnEz1w8EKjIycLQwtTQx8DHzMDYEK3A08A31NjA0CjfWjSNLv7ulnbuAY6OgR5hYWYgzUQpl-AxPi9BvgAI4GhPVHgZXgCwFUBVi8iFcByA9gBXgcWZAbGhoaYZDpma6oCABqndOv/p0/IZ7_NHLCH082KOAG20A6BDUU6K3082=CZ6_NHLCH082K0H2D0A6EKKDC520B5=N/?sectorID=All&_=1630218635227')
main_data=url.json()['data']
df=pd.DataFrame(main_data)

输出:

symbol       lonaName                            shortName  Acronym  isinCode
0   1330    Abdullah A. M. Al-Khodari Sons Co.  ALKHODARI   ALKHODARI   SA12L0O0KP12
1   4001    Abdullah Al Othaim Markets Co.  A.OTHAIM MARKET A.OTHAIM MARKET SA1230K1UGH7
....

图片[在左侧,您可以找到通过搜索生成 URL 的数据]:

【讨论】:

    【解决方案2】:
    import requests
    from pprint import pprint
    url = requests.get('https://www.saudiexchange.sa/tadawul.eportal.theme.helper/ThemeSearchUtilityServlet')
    pprint(url.json())
    

    使用此API可以直接提取行数据表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 2016-05-12
      相关资源
      最近更新 更多