【问题标题】:How to read a BeautifulSoup Div Tag object as a dictionary如何将 BeautifulSoup Div Tag 对象作为字典读取
【发布时间】:2020-12-07 15:54:51
【问题描述】:

这里是 HTML 和 BeautifulSoup 的新手,所以请多多指教。 . . 我用 BS4 阅读了一个房地产网站,并设法在特定的 Div 类中获得了我想要的信息

list_1_divs = soup.find_all('div', class_="ListingCell-AllInfo ListingUnit")

BS4 找到 29 个 Parent Div,每个都包含许多子 Div,但我想要的所有信息似乎都在父 Div 中,所以我删除了它们所有的子 Div。当我打印时,变量“s_row”中生成的父 Div 看起来像一个字符串,但调试模式将“s_row”描述为 {Tag: 3} 包含attrs = {dict: 13} 然后在 Debug 窗口的一个漂亮的结构化列表中列出我想要的元素。

如何在 {Tag} 对象中打印(或传递给 Pandas)底层字典?我的最终目标是创建一个包含 13 个字典元素的表作为列,其中 29 行包含每个“s_row”中的值。提前致谢。

代码:

import urllib.request
from bs4 import BeautifulSoup
wiki = "https://www.lamudi.com.ph/metro-manila/makati/rockwell-1/buy/"
page = urllib.request.urlopen(wiki)
soup = BeautifulSoup(page, features='html.parser')
list_divs = soup.find_all('div', class_="ListingCell-AllInfo ListingUnit")
for s_row in list_divs:
    for child in s_row.find_all("div"):
        child.decompose()
    print(s_row)

【问题讨论】:

    标签: python html dictionary beautifulsoup tags


    【解决方案1】:

    如果我没听错的话,您希望将每个属性提取为数据框中的列:

    import pandas as pd
    import urllib.request
    from bs4 import BeautifulSoup
    
    
    wiki = "https://www.lamudi.com.ph/metro-manila/makati/rockwell-1/buy/"
    page = urllib.request.urlopen(wiki)
    soup = BeautifulSoup(page, features='html.parser')
    list_divs = soup.find_all('div', class_="ListingCell-AllInfo ListingUnit")
    all_data = []
    for s_row in list_divs:
        all_data.append({})
        for a in s_row.attrs:
            if a == 'class':
                continue
            all_data[-1][a] = s_row[a]
    
    df = pd.DataFrame(all_data)
    print(df)
    

    打印:

       data-price data-category                data-subcategories data-car_spaces data-bedrooms  ... data-price_range data-sqm_range data-rooms_total data-land_size data-subdivisionname
    0    82000000   condominium       ["condominium","3-bedroom"]               2             3  ...              NaN            NaN              NaN            NaN                  NaN
    1     9800000   condominium          ["condominium","studio"]             NaN             1  ...              NaN            NaN              NaN            NaN                  NaN
    2    48990000   condominium  ["condominium","double-bedroom"]             NaN             2  ...      37.8M-48.9M     93-121 sqm              NaN            NaN                  NaN
    3    73730000   condominium       ["condominium","3-bedroom"]             NaN             3  ...      45.3M-73.7M    126-202 sqm              NaN            NaN                  NaN
    4    26600000   condominium  ["condominium","single-bedroom"]             NaN             1  ...            26.6M         62 sqm              NaN            NaN                  NaN
    5    27500000   condominium  ["condominium","double-bedroom"]               1             2  ...              NaN            NaN              NaN            NaN                  NaN
    6   130000000   condominium     ["condominium","penthouse-1"]             NaN             4  ...              NaN            NaN              NaN            NaN                  NaN
    7    78000000   condominium       ["condominium","3-bedroom"]               2             3  ...              NaN            NaN              NaN            NaN                  NaN
    8    55000000   condominium       ["condominium","3-bedroom"]               2             3  ...              NaN            165                3            NaN                  NaN
    9    19000000   condominium  ["condominium","single-bedroom"]               1             1  ...              NaN             64                1            NaN                  NaN
    10   30000000   condominium  ["condominium","double-bedroom"]             NaN             2  ...              NaN            NaN              NaN            NaN                  NaN
    11   14000000   condominium  ["condominium","single-bedroom"]             NaN             1  ...              NaN            NaN              NaN            NaN                  NaN
    12   50000000   condominium       ["condominium","3-bedroom"]             NaN             3  ...              NaN            NaN              NaN            NaN                  NaN
    13   48000000   condominium       ["condominium","3-bedroom"]             NaN             3  ...              NaN            NaN              NaN            NaN                  NaN
    14   27000000   condominium  ["condominium","double-bedroom"]             NaN             2  ...              NaN            NaN              NaN            NaN                  NaN
    15   36000000   condominium       ["condominium","3-bedroom"]             NaN             3  ...              NaN            NaN              NaN            NaN                  NaN
    16   52000000         house   ["house","single-family-house"]               4             3  ...              NaN            NaN              NaN            110         Palm Village
    17   48000000   condominium       ["condominium","3-bedroom"]               2             3  ...              NaN            NaN                4            NaN                  NaN
    18   37500000   condominium  ["condominium","double-bedroom"]               2             2  ...              NaN            NaN              NaN            NaN                  NaN
    19   19000000   condominium  ["condominium","double-bedroom"]               1             2  ...              NaN            NaN              NaN            NaN                  NaN
    20   66700000   condominium       ["condominium","3-bedroom"]               2             3  ...              NaN            NaN              NaN            NaN                  NaN
    21   16500000   condominium  ["condominium","double-bedroom"]               1             2  ...              NaN            NaN              NaN            NaN                  NaN
    22   12900000   condominium  ["condominium","single-bedroom"]               1             1  ...              NaN            NaN              NaN            NaN                  NaN
    23   20000000   condominium  ["condominium","double-bedroom"]               1             2  ...              NaN            NaN              NaN            NaN                  NaN
    24   17300000   condominium  ["condominium","single-bedroom"]             NaN             1  ...              NaN            NaN              NaN            NaN                  NaN
    25   25000000   condominium  ["condominium","double-bedroom"]             NaN             2  ...              NaN            NaN              NaN            NaN                  NaN
    26   14000000   condominium  ["condominium","single-bedroom"]             NaN             1  ...              NaN            NaN              NaN            NaN                  NaN
    27   32000000   condominium  ["condominium","double-bedroom"]             NaN             2  ...              NaN            NaN              NaN            NaN                  NaN
    28   38000000   condominium  ["condominium","double-bedroom"]               1             2  ...              NaN            NaN              NaN            NaN                  NaN
    
    [29 rows x 17 columns]
    

    【讨论】:

    • 嗯,这非常完美!非常感谢!
    猜你喜欢
    • 2019-03-29
    • 2018-10-03
    • 2018-10-02
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    相关资源
    最近更新 更多