如何在 python selenium 的 css 选择器中包含正则表达式
How to include regex in the css selector in python selenium
我正在尝试使用 CSS 选择器提取文本。由于变量本质上是动态的,因此它们会不断更新。
#profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US
this is a CSS selector
driver.find_element_by_css_selector('#profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US').text
x_path = //*[@id="profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US"]
# here i tried to apply the regex
driver.find_element_by_xpath("//*[ends-with(@id,'EDUCATION-en-US')]")
但是我收到一个错误 'InvalidSelectorException'。
有什么方法可以不报错的获取数据吗?
'ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8'本路径会持续更新。
'#profileCard', 'EDUCATION-en-US' 这个不会有变化
任何解决问题的帮助或线索都会非常有帮助。提前致谢
这应该可以满足您的需求:
driver.find_element_by_css_selector('[id^="profileCard-"][id$="-EDUCATION-en-US"]').text
^
表示 id
应该以什么开头。
$
表示 id
应该以什么结尾。
对于 id 属性的值,例如:
#profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US
xpath 不支持 ends-with()
。相反,您可以使用以下任一选项:
使用 xpath:
driver.find_element(By.XPATH, "//*[starts-with(@id, 'profileCard') and contains(@id, 'EDUCATION-en-US')]").text
使用css_selector:
driver.find_element(By.CSS_SELECTOR, "[id^='profileCard'][id$='EDUCATION-en-US']").text
我正在尝试使用 CSS 选择器提取文本。由于变量本质上是动态的,因此它们会不断更新。
#profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US
this is a CSS selector
driver.find_element_by_css_selector('#profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US').text
x_path = //*[@id="profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US"]
# here i tried to apply the regex
driver.find_element_by_xpath("//*[ends-with(@id,'EDUCATION-en-US')]")
但是我收到一个错误 'InvalidSelectorException'。
有什么方法可以不报错的获取数据吗?
'ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8'本路径会持续更新。 '#profileCard', 'EDUCATION-en-US' 这个不会有变化
任何解决问题的帮助或线索都会非常有帮助。提前致谢
这应该可以满足您的需求:
driver.find_element_by_css_selector('[id^="profileCard-"][id$="-EDUCATION-en-US"]').text
^
表示 id
应该以什么开头。
$
表示 id
应该以什么结尾。
对于 id 属性的值,例如:
#profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US
xpath 不支持 ends-with()
。相反,您可以使用以下任一选项:
使用 xpath:
driver.find_element(By.XPATH, "//*[starts-with(@id, 'profileCard') and contains(@id, 'EDUCATION-en-US')]").text
使用css_selector:
driver.find_element(By.CSS_SELECTOR, "[id^='profileCard'][id$='EDUCATION-en-US']").text