Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从网站中删除没有类或id的元素_Python_Selenium_Web Scraping - Fatal编程技术网

Python 如何从网站中删除没有类或id的元素

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.

我正在做一个硒项目。在这个项目中,我试图从网站上刮取一个特定的元素。元素没有与其关联的类或ID。所以我有点被困在如何提取细节上

这是

在网站中,如果您查看HTML标记以获取规范,则会看到一个
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:']]")))))