Python 如何从网站中删除没有类或id的元素
我正在做一个硒项目。在这个项目中,我试图从网站上刮取一个特定的元素。元素没有与其关联的类或ID。所以我有点被困在如何提取细节上 这是 在网站中,如果您查看HTML标记以获取规范,则会看到一个Python 如何从网站中删除没有类或id的元素,python,selenium,web-scraping,Python,Selenium,Web Scraping,我正在做一个硒项目。在这个项目中,我试图从网站上刮取一个特定的元素。元素没有与其关联的类或ID。所以我有点被困在如何提取细节上 这是 在网站中,如果您查看HTML标记以获取规范,则会看到一个div,其内容为Form:Liquid。我想提取“液体” 这是到目前为止我的代码 def extract(): form_element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.
div
,其内容为Form:Liquid
。我想提取“液体”
这是到目前为止我的代码
def extract():
form_element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//b[text()='Form']/")))
form_text = form_element.text
return form_text
这将导致出现TimeOutException
。我不确定我做错了什么
PS:我可以点击页面上的
显示更多按钮来显示带有selenium的规格区域。以防万一,这不是问题。您可以通过设置为driver=webdriver.Chrome()
{假设您正在使用Chrome并且安装了webdriver for Chrome}并将下一行写为<代码>驱动程序。通过标记名称(“h1”)查找元素。
[假设您想提取有关h1元素的详细信息并使用该元素。]。希望我能正确理解您的问题。您可以通过设置驱动程序=webdriver.Chrome()
{假设您正在使用Chrome并且安装了webdriver for Chrome}并将下一行写为:<代码>驱动程序。通过标记名称(“h1”)查找元素。
[假设您想提取有关h1元素的详细信息并使用该元素。]。希望我正确理解您的问题。使用此xpath从您想要的元素中获取父元素div
:
//b[text()=“Form:”///parent::div
要获取文本,您似乎必须使用.get_属性('innerHTML')
而不是.text
请尝试以下代码:
def extract():
form_element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//b[text()='Form:']//parent::div")))
form_text = form_element.get_attribute('innerHTML').split("</b>",1)[1]
return form_text
def extract():
form_element=WebDriverWait(driver,20).until(EC.presence_of_element_位于((By.XPATH,“//b[text()='form:']//parent::div”))
form_text=form_元素。get_属性('innerHTML')。split(“,1)[1]
返回表格文本
使用此xpath从所需元素中获取父级:
//b[text()=“Form:”///parent::div
要获取文本,您似乎必须使用.get_属性('innerHTML')
而不是.text
请尝试以下代码:
def extract():
form_element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//b[text()='Form:']//parent::div")))
form_text = form_element.get_attribute('innerHTML').split("</b>",1)[1]
return form_text
def extract():
form_element=WebDriverWait(driver,20).until(EC.presence_of_element_位于((By.XPATH,“//b[text()='form:']//parent::div”))
form_text=form_元素。get_属性('innerHTML')。split(“,1)[1]
返回表格文本
当我们试图通过定位器获取元素时,ID是唯一的,如果您没有ID,可以使用类名、xpath和linktext
使用此xapth:
//*[contains(text(),'Liquid')]
当我们试图通过定位器获取元素时,ID是唯一的,如果您没有ID,可以使用类名、xpath和linktext 使用此xapth:
//*[contains(text(),'Liquid')]
要获取值
Liquid
,您需要先单击显示更多
按钮,然后等待页面上元素的visibility\u\u located()
。您可以使用以下方法获取值
使用拆分()
使用Java脚本执行器
driver.get("https://www.target.com/p/hawaiian-punch-fruit-juicy-red-1-gal-bottle/-/A-13051948")
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//button[@data-test='toggleContentButton' and contains(.,'Show more')]"))).click()
print(driver.execute_script('return arguments[0].lastChild.textContent;', WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"//div[./b[text()='Form:']]")))))
要获取值Liquid
,您需要先单击显示更多
按钮,然后等待页面上元素的visibility\u\u located()
。您可以使用以下方法获取值
使用拆分()
使用Java脚本执行器
driver.get("https://www.target.com/p/hawaiian-punch-fruit-juicy-red-1-gal-bottle/-/A-13051948")
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//button[@data-test='toggleContentButton' and contains(.,'Show more')]"))).click()
print(driver.execute_script('return arguments[0].lastChild.textContent;', WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"//div[./b[text()='Form:']]")))))