如何使用bs4或Selenium获取Twitch页面元素的status属性值
获取Twitch页面元素status属性的两种实现方案
方案1:通过BeautifulSoup解析获取
你可以先定位到目标<a>标签元素,再通过元素的属性取值方法拿到status对应值,补全你的代码如下:
from bs4 import BeautifulSoup from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium import webdriver from selenium.webdriver.chrome.options import Options op = Options() op.add_argument("user-data-dir=C:\\Users\\bestg\\AppData\\Local\\Google\\Chrome\\bor") driver = webdriver.Chrome(options=op) driver.get('https://www.twitch.tv/mizkif') html = driver.page_source soup = BeautifulSoup(html, features="html.parser") # 以下为获取status属性的代码 # 写法1:通过class定位,用get方法避免属性不存在抛出异常 target_tag = soup.find('a', class_='tw-halo') if target_tag: status_value = target_tag.get('status') print(status_value) # 离线状态下输出为offline,在线时输出online # 写法2:直接匹配带status属性的a标签 target_tag2 = soup.find('a', attrs={'status': True}) if target_tag2: status_value2 = target_tag2['status'] # 筛选离线直播间点击头像 stream = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, ".//a[@status='offline']"))) stream.click()
方案2:直接通过Selenium获取(无需转BeautifulSoup)
Selenium原生支持获取元素的自定义属性,不需要额外解析页面源码,写法更简单:
# 等待元素加载完成后直接获取status属性 target_ele = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, ".//a[contains(@class,'tw-halo')]"))) status_value = target_ele.get_attribute('status') print(status_value) # 结合离线判断再点击的写法 if status_value == 'offline': target_ele.click()
内容的提问来源于stack exchange,提问作者John Anthony
相关产品推荐
相关产品推荐

