我有一個使用 BeautifulSoup 撰寫的代碼,我目前正在探索 Selenium,但無法確定(我希望有可能)提取嵌套在某些 HTML 中的資料。
這是 bs4 代碼:
def get_data(link):
soup1 = getdata(link)
for one_offer in soup1.find_all('li', {'class': 'clearfix'}):
# Get sqm:
raw_sqm = one_offer.find('div', {'class': 'inline-group'})
get_sqm = raw_sqm.get_text().split(',')[1].split()[0]
sqm_check_value = if_area_not_speicified(get_sqm)
sqm_area.append(float(sqm_check_value))
上面的代碼采用鏈接:
one_offer是一個街區。從上圖中可以看出,紅色、綠色和藍色矩形部分。之后,我從每個塊中獲得用紅色箭頭指示的區域,并將它們附加到串列中。
如何將其轉換為 Selenium 代碼?
到目前為止,我有:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
PATH = '/Applications/chromedriver'
driver = webdriver.Chrome(PATH)
driver.get('https://www.imoti.net/bg/obiavi/r/prodava/sofia/?sid=hSrJhL')
variable = []
def testing_values():
variable.append(driver.find_elements_by_class_name('clearfix'))
testing_values()
print(variable)
該testing_values函式回傳以下串列:
[[<selenium.webdriver.remote.webelement.WebElement (session="45a761354e96082ad7cee4c299682bd2", element="5e3d2712-f453-4871-a43e-8d72d40e6a65")>, <selenium.webdriver.remote.webelement.WebElement (session="45a761354e96082ad7cee4c299682bd2", element="53a21fd3-495a-41d4-9382-ae61961209ed")>, <selenium.webdriver.remote.webelement.WebElement (session="45a761354e96082ad7cee4c299682bd2", element="56d80ac6-bfaa-48de-9e87-1d2f3c9a42a4")>, <selenium.webdriver.remote.webelement.WebElement (session="45a761354e96082ad7cee4c299682bd2", element="74362762-087e-4221-a4b7-cbdf10a16400")>, <selenium.webdriver.remote.webelement.WebElement (session="45a761354e96082ad7cee4c299682bd2"]
*此串列包含 30 個專案,但是我洗掉了其中一些以保持示例更小。
所以,我有一個包含某種 web 元素的串列,但是如何從每個元素中提取資料以獲得區域,類似于使用 的代碼bs4?
uj5u.com熱心網友回復:
您有一個帶有類 clearfix 的額外 div 類。所以你只想遍歷它們和 xpath .// 并獲取它們的文本值。
variable = []
def testing_values():
variable.append([x.find_element_by_xpath(".//div[@class='real-estate-text']/header/div/h3/span[2]").text for x in driver.find_elements_by_xpath("//li[@class='clearfix']")])
testing_values()
print(variable)
輸出:
[['543 М2', '10 М2', '12 М2', '36 М2', '660 М2', '635 М2', '44 М2', '41 М2', '50 М2', '60 М2', '50 М2', '64 М2', '64 М2', '59 М2', '90 М2', '51 М2', '1053 М2', '72 М2', '66 М2', '78 М2', '65 М2', '52 М2', '75 М2', '68 М2', '62 М2', '72 М2', '90 М2', '78 М2', '74 М2', '57 М2']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/364691.html
