【问题标题】:unable to extract the table using bs4无法使用 bs4 提取表
【发布时间】:2021-09-11 00:37:21
【问题描述】:

您好,我正在尝试从该站点提取表格:

Target Site for Scrape

我尝试使用 bs4 以及 pd.read_html。尽管在“汤”中看到了表格标签,但我无法让它找到它们。我的猜测是数据在之后加载。理想情况下,我希望在不使用硒的情况下做到这一点。我注意到它还有一个类似字典的对象,称为“var model”有没有办法通过请求访问它?我已经从源代码中复制了它并发布在下面。

干杯

var model = {"CurrentInterbankRate":74.72140399,"CurrentInverseInterbankRate":0.01338305,"Average":15.14101240,"HistoricalPoints":[{"PointInTime":978307199999,"InterbankRate":0.99973015,"InverseInterbankRate":1.00027002},{"PointInTime":1009843199999,"InterbankRate":1.00000857,"InverseInterbankRate":0.99999155},{"PointInTime":1041379199999,"InterbankRate":2.63289734,"InverseInterbankRate":0.43403613},{"PointInTime":1072915199999,"InterbankRate":2.94796721,"InverseInterbankRate":0.34009351},{"PointInTime":1104537599999,"InterbankRate":2.94124008,"InverseInterbankRate":0.34012553},{"PointInTime":1136073599999,"InterbankRate":2.91477610,"InverseInterbankRate":0.54410527},{"PointInTime":1167609599999,"InterbankRate":3.07339545,"InverseInterbankRate":0.32538532},{"PointInTime":1199145599999,"InterbankRate":3.11525349,"InverseInterbankRate":0.32103202},{"PointInTime":1230767999999,"InterbankRate":3.16700443,"InverseInterbankRate":0.31621115},{"PointInTime":1262303999999,"InterbankRate":3.72898339,"InverseInterbankRate":0.26848343},{"PointInTime":1293839999999,"InterbankRate":3.91137986,"InverseInterbankRate":0.25571003},{"PointInTime":1325375999999,"InterbankRate":4.12870331,"InverseInterbankRate":0.24233673},{"PointInTime":1356998399999,"InterbankRate":4.54916212,"InverseInterbankRate":0.22016157},{"PointInTime":1388534399999,"InterbankRate":5.47453082,"InverseInterbankRate":0.18368720},{"PointInTime":1420070399999,"InterbankRate":8.11288453,"InverseInterbankRate":0.12367665},{"PointInTime":1451606399999,"InterbankRate":9.24612693,"InverseInterbankRate":0.10878823},{"PointInTime":1483228799999,"InterbankRate":14.75736653,"InverseInterbankRate":0.06790187},{"PointInTime":1514764799999,"InterbankRate":16.55924652,"InverseInterbankRate":0.06057628},{"PointInTime":1546300799999,"InterbankRate":28.14054973,"InverseInterbankRate":0.03813937},{"PointInTime":1577836799999,"InterbankRate":48.19220455,"InverseInterbankRate":0.02137447},{"PointInTime":1609459199999,"InterbankRate":70.63534275,"InverseInterbankRate":0.01430140},{"PointInTime":1631282400000,"InterbankRate":92.87351896,"InverseInterbankRate":0.01078530}]},
    txt = $$('TEXTAREA')[0],
    humanize = true && location.hash.indexOf('dehumanize') == -1,

【问题讨论】:

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


    【解决方案1】:

    您不需要抓取表格,因为数据已经以 JSON 格式(以及其他格式)可用。只需将&format=json 附加到 URL 的末尾,如下所示:

    https://api.ofx.com/PublicSite.ApiService/SpotRateHistory/allTime/USD/ARS?DecimalPlaces=8&ReportingInterval=yearly&format=json

    你会得到以下结果:

    {
        "CurrentInterbankRate": 74.72140399,
        "CurrentInverseInterbankRate": 0.01338305,
        "Average": 15.14101240,
        "HistoricalPoints": [{
            "PointInTime": 978307199999,
            "InterbankRate": 0.99973015,
            "InverseInterbankRate": 1.00027002
        }, {
            "PointInTime": 1009843199999,
            "InterbankRate": 1.00000857,
            "InverseInterbankRate": 0.99999155
        }, {
            "PointInTime": 1041379199999,
            "InterbankRate": 2.63289734,
            "InverseInterbankRate": 0.43403613
        }, {
            "PointInTime": 1072915199999,
            "InterbankRate": 2.94796721,
            "InverseInterbankRate": 0.34009351
        }, {
            "PointInTime": 1104537599999,
            "InterbankRate": 2.94124008,
            "InverseInterbankRate": 0.34012553
        }, {
            "PointInTime": 1136073599999,
            "InterbankRate": 2.91477610,
            "InverseInterbankRate": 0.54410527
        }, {
            "PointInTime": 1167609599999,
            "InterbankRate": 3.07339545,
            "InverseInterbankRate": 0.32538532
        }, {
            "PointInTime": 1199145599999,
            "InterbankRate": 3.11525349,
            "InverseInterbankRate": 0.32103202
        }, {
            "PointInTime": 1230767999999,
            "InterbankRate": 3.16700443,
            "InverseInterbankRate": 0.31621115
        }, {
            "PointInTime": 1262303999999,
            "InterbankRate": 3.72898339,
            "InverseInterbankRate": 0.26848343
        }, {
            "PointInTime": 1293839999999,
            "InterbankRate": 3.91137986,
            "InverseInterbankRate": 0.25571003
        }, {
            "PointInTime": 1325375999999,
            "InterbankRate": 4.12870331,
            "InverseInterbankRate": 0.24233673
        }, {
            "PointInTime": 1356998399999,
            "InterbankRate": 4.54916212,
            "InverseInterbankRate": 0.22016157
        }, {
            "PointInTime": 1388534399999,
            "InterbankRate": 5.47453082,
            "InverseInterbankRate": 0.18368720
        }, {
            "PointInTime": 1420070399999,
            "InterbankRate": 8.11288453,
            "InverseInterbankRate": 0.12367665
        }, {
            "PointInTime": 1451606399999,
            "InterbankRate": 9.24612693,
            "InverseInterbankRate": 0.10878823
        }, {
            "PointInTime": 1483228799999,
            "InterbankRate": 14.75736653,
            "InverseInterbankRate": 0.06790187
        }, {
            "PointInTime": 1514764799999,
            "InterbankRate": 16.55924652,
            "InverseInterbankRate": 0.06057628
        }, {
            "PointInTime": 1546300799999,
            "InterbankRate": 28.14054973,
            "InverseInterbankRate": 0.03813937
        }, {
            "PointInTime": 1577836799999,
            "InterbankRate": 48.19220455,
            "InverseInterbankRate": 0.02137447
        }, {
            "PointInTime": 1609459199999,
            "InterbankRate": 70.63534275,
            "InverseInterbankRate": 0.01430140
        }, {
            "PointInTime": 1631282400000,
            "InterbankRate": 92.87351896,
            "InverseInterbankRate": 0.01078530
        }]
    }
    

    (有点格式)。

    【讨论】:

    • 干杯伙伴 这样做的主要线索是什么,所以我知道将来要寻找什么?我没有意识到你可以做到这一点!
    • @JPWilson API 经常以您选择的格式返回数据,而不仅仅是呈现的 HTML 和 JavaScript。页面右上角有指向 JSON、XML、CSV 和 JSV 的链接,但它们已损坏。我查看了他们的 URL 并看到他们有一个 &format=XXX 参数,所以我只是在您提供的 URL 上尝试了它并且它有效。稍微深入一点总是值得的,当你获得经验时,你会开始找出常见的做事方式。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多