如何从aria-label属性中提取文本?(Indeed爬取工作生活平衡评分场景)
从Indeed页面提取工作与生活平衡评分的方法
针对你要提取aria-label属性文本的需求,以下是几种常用爬虫工具的实现方式:
方法一:使用BeautifulSoup(静态页面解析)
如果页面是静态加载的,直接用BeautifulSoup定位元素并获取属性值即可:
from bs4 import BeautifulSoup # 替换为你实际获取的页面源码 html_content = '''<div role="img" aria-label="4.0 out of 5 stars."><div class="css-eub7j6 eu4oa1w0"><div data-testid="filledStar" style="width:42.68px" class="css-i84nrz eu4oa1w0"></div></div></div>''' soup = BeautifulSoup(html_content, 'html.parser') # 定位目标div元素 rating_div = soup.find('div', role='img') # 提取aria-label属性的文本内容 rating_text = rating_div.get('aria-label') print(rating_text) # 输出:4.0 out of 5 stars.
方法二:使用Selenium(动态页面渲染)
如果Indeed页面的评分是JavaScript动态加载的,需要用Selenium处理:
from selenium import webdriver from selenium.webdriver.common.by import By # 初始化浏览器驱动(需对应你的浏览器版本) driver = webdriver.Chrome() driver.get("你要爬取的Indeed目标页面URL") # 通过CSS选择器定位目标元素 rating_element = driver.find_element(By.CSS_SELECTOR, 'div[role="img"]') # 获取aria-label属性值 rating_text = rating_element.get_attribute('aria-label') print(rating_text) driver.quit()
方法三:使用Playwright(动态页面渲染)
Playwright是更现代的自动化工具,处理动态页面更高效:
from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=True) # headless=True表示无头模式运行 page = browser.new_page() page.goto("你要爬取的Indeed目标页面URL") # 定位元素并提取aria-label属性 rating_text = page.locator('div[role="img"]').get_attribute('aria-label') print(rating_text) browser.close()
注意事项
- 页面中可能存在多个带
role="img"的元素(比如其他维度的评分),建议结合父元素的类名或文本特征缩小定位范围,确保提取的是工作与生活平衡的评分。 - 爬取Indeed页面时需遵守网站的
robots.txt规则,避免过于频繁的请求导致被封禁。
内容的提问来源于stack exchange,提问作者Annie Dhawan
相关产品推荐
相关产品推荐

