【发布时间】:2022-01-01 09:23:52
【问题描述】:
我有一个使用 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))
以上代码取链接:https://www.imoti.net/bg/obiavi/r/prodava/sofia/?sid=hSrJhL 从链接我执行以下操作:
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 项,但我删除了其中一些以使示例更小。
所以,我有一个包含某种网络元素的列表,但是如何从每个元素中提取数据以获取该区域,类似于使用 bs4 的代码?
【问题讨论】:
-
循环它和 xpath ./ 它似乎在标题 /div/h3/span 中,您可以在其中 .text 整个跨度。
-
您还有一个额外的 html 元素,其 class clearfix 是一个 div。
标签: python selenium beautifulsoup