我正在使用 beautifulsoup 從房地產網站上抓取資料。
這是頁面的鏈接:https : //www.imoti.net/bg/obiavi/r/prodava/bulgaria/? page =1&sid=iXMpXe
我有以下運行良好的代碼。
from requests_html import HTMLSession
from bs4 import BeautifulSoup
import pandas as pd
import re
s = HTMLSession()
url = 'https://www.imoti.net/bg/obiavi/r/prodava/bulgaria/?page=1&sid=iXMpXe'
r = s.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
def get_prices(urls):
prices = []
type_of_property = []
for price in soup.find('ul', {'class': 'list-view real-estates'}).find_all('strong', {'class': 'price'}):
price_text = price.get_text()
price_arr = re.findall('[0-9] ', price_text)
final_price = ''
for each_sub_price in price_arr:
final_price = each_sub_price
prices.append(final_price)
for property_type in soup.find('ul', {'class': 'list-view real-estates'}).find_all('div', {'class': 'inline-group'}):
property_type_value = property_type.get_text()
type_of_property.append(property_type_value)
return prices, type_of_property
print(get_prices(url))
我得到的輸出是:
(['1000', '1341', '1381', '1400', '2659', '11990', '14000', '18900', '23000', '25000', '28500', '29923', '31714', '34034', '35000', '35806', '36615', '37900', '39386', '40523', '42000', '42174', '44000',
'44300', '44400', '45000', '45899', '46000', '47550', '47999'], ['\nпродава Земеделски имот, 2833 м2\nВелико Търново област, с.Въглевци\n', '\nпродава Земеделски имот, 7186 м2\nВелико Търново област, с.Въглевци\n', '\nпродава Офис, 36 м2\nПловдив област, гр.Първомай\n', '\nпродава Парцел, 543 м2\nСофия, Сердика\n', '\nпродава Търговски обект, 125 м2\nПловдив област, с.Караджалово\n', '\nпродава Гараж, паркомясто, 17 м2\nСофия, Център, бул. Т. Александров\n', '\nпродава Къща, 120 м2\nПазарджик област, с.Поибрене\n', '\nпродава Парцел, 728 м2\nСмолян, Устово\n', '\nпродава Магазин, 31 м2\nСофия, Люлин 9\n', '\nпродава Парцел, 382 м2\nСофия област, с.Мала Църква\n', '\nпродава Двустаен апартамент, 32 м2\nБургас, Сарафово\n', '\nпродава Къща, 124 м2\nСофия област, с.Осиковица\n', '\nпродава Къща, 64 м2\nСофия област, гр. Етрополе\n', '\nпродава Къща, 100 м2\nМонтана област, гр.Берковица\n', '\nпродава Заведение, 185 м2\nСофия, Младост 4\n', '\nпродава Къща, 184 м2\nПловдив област, с.Новаково\n', '\nпродава Едностаен апартамент, 52 м2\nПловдив, Христо Смирненски\n', '\nпродава Къща, 105 м2\nПловдив област, с.Брестник\n', '\nпродава Земеделски имот, 7000 м2\nБлагоевград област, гр.Банско\n', '\nпродава Двустаен апартамент, 59 м2\nПловдив, Кючук Париж\n', '\nпродава Двустаен апартамент, 75 м2\nПловдив, Южен\n', '\nпродава Двустаен апартамент, 60 м2\nПловдив, Христо Смирненски\n', '\nпродава Двустаен апартамент,
67 м2\nВарна, Трошево\n', '\nпродава Двустаен апартамент, 68 м2\nБургас област, гр.Черноморец\n', '\nпродава Двустаен апартамент, 95 м2\nБлагоевград област, гр.Банско\n', '\nпродава Парцел, 521 м2\nСофия, Требич\n', '\nпродава Двустаен апартамент, 65 м2\nПловдив, Христо Смирненски\n', '\nпродава Парцел, 635 м2\nСофия, Казичене (с.)\n', '\nпродава Земеделски имот, 6640 м2\nБургас област, гр.Каблешково\n',
'\nпродава Двустаен апартамент, 40 м2\nПловдив, Кършияка\n'])
第一個陣列是正確的。我知道價格。
然而,在第二個中,我應該只獲得財產的型別。
例如:從這個 ['\nпродава Земеделски имот , 2833 м2\nВелико Търново област, с.Въглевци\n',
我應該只得到粗體文本。
此文本當前嵌套在 a with a children 和另一個 children 中。實際上介于兩者之間,這對我來說很奇怪。
任何想法如何提取這些資訊?
uj5u.com熱心網友回復:
您可以使用 split() 方法來做到這一點,如下所示:
from requests_html import HTMLSession
from bs4 import BeautifulSoup
import pandas as pd
import re
s = HTMLSession()
url = 'https://www.imoti.net/bg/obiavi/r/prodava/bulgaria/?page=1&sid=iXMpXe'
r = s.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
def get_prices(urls):
prices = []
type_of_property = []
for price in soup.find('ul', {'class': 'list-view real-estates'}).find_all('strong', {'class': 'price'}):
price_text = price.get_text()
price_arr = re.findall('[0-9] ', price_text)
final_price = ''
for each_sub_price in price_arr:
final_price = each_sub_price
prices.append(final_price)
for property_type in soup.find('ul', {'class': 'list-view real-estates'}).find_all('div', {'class': 'inline-group'}):
property_type_value = ' '.join(property_type.get_text().split(',')[0].split()[1:3])
type_of_property.append(property_type_value)
return prices, type_of_property
print(get_prices(url))
輸出:
['Земеделски имот',
'Земеделскиимот', 'Офис', 'Парцел', 'Търговскиобект', 'Гараж', 'Къща', 'Парцел', 'Магазин', 'Парцел', 'Двустаенапартамент', 'Къща', 'Къща' , 'Къща', 'Заведение', 'Къща', 'Едностаенапартамент', 'Къща', 'Земеделскиимот', 'Двустаенапартамент', 'Двустаенапартамент', 'Двустаенапартамент', 'Двустаенапартамент',“Двустаенапартамент ', 'Двустаен апартамент', 'Парцел', 'Двустаен апа
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/346508.html
