Selenium,从 div 类中嵌套的标签获取文本

问题描述 投票:0回答:1

我被这个问题困扰了很长一段时间。

所以我使用 Selenium 进行网页抓取,并且陷入了从 html 中提取文本的困境。我尝试查看有关该主题的其他答案,但它们不起作用。

这是我的代码片段:

# Extract listing links
product_elements = soup.find_all('div', class_='professional-box') # find all div element 
product_link = []
for product_element in product_elements: #for loop iterating a list of elements
    content = product_element.find('div', class_='text-box type-a') 
    if content:
        link = content.find('a').get('href')    #get link
        product_link.append({'link':link}) #append "link" dict with value from link variable in product_link list

#Visit all listing links and scrape the data
product_info = []
for product in product_link: #for loop iterating a list of one dict [{"link"}]
    driver.get(product['link']) # get from the dict [{"link"}]
    button = driver.find_elements(By.CLASS_NAME, "text-box left-pad-25") #click all the detail buttons
    for btn in button:
        btn.click()
    if product:
        name_parent = driver.find_element(By.CLASS_NAME,'text-box') #get name 
        name = name_parent.find('a').text

        facebook_parent = driver.find_element(By.CLASS_NAME,'left-facebook phone-number').get('href')   
        facebook = facebook_parent.find_element(By.TAG_NAME,'a').get('href')

有问题的部分在“if Product:”之后, 特别是在“name_parent.find”上。我还尝试了“facebook_parent.find_element”和“driver.find_element(By.XPATH,“//div[@class='text-box']/p”).getText()”,但都不起作用

我想从此源代码中提取文本:

<div class="text-box">
<p>Lingga Studio</p>
</div>

name_parent.find 的回溯是:

  File "c:\Users\user\Desktop\Code\Archify.py", line 51, in <module>
    name = name_parent.find('a').text
           ^^^^^^^^^^^^^^^^
AttributeError: 'WebElement' object has no attribute 'find'

facebook_parent.find_element 的回溯是:

return self._execute(Command.FIND_CHILD_ELEMENT, {"using": by, "value": value})["value"]

driver.find_element(By.XPATH, "//div[@class='text-box']/p").getText() 的回溯是:

AttributeError: 'WebElement' object has no attribute 'getText'

谢谢你

python selenium-webdriver
1个回答
0
投票

您确定 div 类“文本框”内的

标记有一个锚标记吗? 直接尝试使用 name_parent.text

其次,facebook_parrent已经是一个WebElement了,所以你不需要再使用find_element,你可以直接使用get_attribute('href')

© www.soinside.com 2019 - 2024. All rights reserved.