【发布时间】:2022-02-16 21:26:42
【问题描述】:
<div class="Fz(12px) Px(8px) Mend(4px) Va(m) Bdrs(3px) C($c-fuji-grey-g) Bgc($c-fuji-grey-b) Cur(d) Py(3px)"><svg class="Mend(6px) Cur(d) Cur(p)" width="18" height="18" viewBox="0 0 48 48" data-icon="traffic" style="vertical-align: middle; fill: rgb(51, 51, 51); stroke: rgb(51, 51, 51); stroke-width: 0;"><path d="M35.826 11.728c-1.102.044-1.96.975-1.918 2.078.045 1.102.975 1.96 2.078 1.918l3.73-.15.014.015-10.033 10.033L19.6 15.527c-.78-.78-2.047-.78-2.827 0-.142.142-.25.302-.338.47-.168.09-.33.197-.47.34L.585 31.714c-.78.78-.78 2.047 0 2.828.392.39.904.586 1.415.586s1.024-.196 1.414-.587L18.187 19.77l10.07 10.068c.39.39.9.586 1.413.586s1.024-.195 1.414-.586c.11-.11.2-.23.28-.355.167-.09.327-.197.468-.34l10.71-10.71-.148 3.7c-.023.58.204 1.112.585 1.493.343.343.81.563 1.333.584 1.104.044 2.035-.815 2.078-1.918l.44-11.003-11.004.438z"></path></svg>Bullish</div>
我正在尝试提取文本,'Bullish',使用 XPATH 但它不成功。
sentiment_search = '//*[@id="canvass-0-CanvassApplet"]/div/ul/li/div/div[3]/div/div/text()'
sentiment = driver.find_elements(By.XPATH, sentiment_search).text
try:
for i in range(len(posts)):
try:
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, sentiment_search)))
if sentiment == 'Bullish':
print('Bullish')
【问题讨论】:
-
您提供的 DOM 行显然有很多随机属性。唯一的静态属性看起来像
data-icon="traffic"。此外,它看起来像是包含在svg元素中。如果不查看与该段相关的完整 DOM,就很难缩小元素的范围。如果这是您页面中唯一的svg元素,那么您可以尝试driver.find_element(By.XPATH, "//*[name()='svg']).text。此外,请尝试使用visibility_of_element_located而不是presence_of_element_located,因为有时元素可能存在但不可见,因此提取失败
标签: python-3.x selenium web-scraping xpath