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

0 投票
1 回答
23 浏览
提问于 2025-04-13 12:53

我在这个问题上卡了很久。

我正在用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'

谢谢你。

1 个回答

0

你确定在类名为 "text-box" 的 div 里面有一个 <a> 标签吗?

可以直接试试 name_parent.text

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

撰写回答