将网页抓取结果加载到Pandas DataFrame中

3

I have the following code:

sauce = urllib.request.urlopen('https://www.iproperty.com.my/sale/selangor/all-commercial/?q=UOA%20Business%20Park').read()
soup = bs.BeautifulSoup(sauce,'html.parser')

price = soup.find_all('ul',class_='listing-primary-price jMWEse')

BUA = soup.find_all('li',class_='attributes-price-per-unit-size-item builtUp-attr fsbnan')


for data in price:
    Price =  data.text
    print(Price)

for data in BUA:
    BUA =  data.text
    print(BUA)

打印价格建筑面积会给我以下结果:

Price:
RM 1,067,490
RM 2,246,160
RM 929,160
RM 1,321,000
RM 103,840,000

BUA:
Built-up : 1,227 sq. ft.Built-up : 1,227 sq. ft.
Built-up : 2,292 sq. ft.Built-up : 2,292 sq. ft.
Built-up : 1,044 sq. ft.Built-up : 1,044 sq. ft.
Built-up : 1,335 sq. ft.Built-up : 1,335 sq. ft.
Built-up : 118,000 sq. ft.Built-up : 118,000 sq. ft.

我的问题是,我如何将价格BUA加载到Pandas Dataframe中,因为我想将它们结合起来并打印出最终结果,例如:

    Price:              BUA:        
0   RM 1,067,490        Built-up : 1,227 sq. ft.Built-up : 1,227 sq. ft.
1   RM 2,246,160        Built-up : 2,292 sq. ft.Built-up : 2,292 sq. ft.
2   RM 929,160          Built-up : 1,044 sq. ft.Built-up : 1,044 sq. ft.
3   RM 1,321,000        Built-up : 1,335 sq. ft.Built-up : 1,335 sq. ft.
4   RM 103,840,000      Built-up : 118,000 sq. ft.Built-up : 118,000 sq. ft.

我希望将它们放入Pandas数据框中的另一个原因是因为后续需要在Excel中进行一些计算。

2个回答

2

我相信您需要:

a = [data.text for data in price]
b = [data.text for data in BUA]

df = pd.DataFrame({'price':a, 'BUA':b}, columns=['price','BUA'])

1
工作非常好!!谢谢! - Eric Choi

0
  df = pd.DataFrame()
  df['price'] = [data.text for data in price]
  df['bua'] = [data.text for data in bua]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接