使用python硒从HTML标记中提取占位符

时间:2018-12-12 12:00:42

标签: python selenium

我正在使用以下python代码启动Firefox网页。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver= webdriver.Firefox()
driver.get("https://www.quora.com")

启动后,如果我以某种方式知道此标签的xpath。

<input  
class="text header_login_text_box ignore_interaction" 
type="text" 
name="email" tabindex="1"
data-group="js-editable"
placeholder="Email"
w2cid="wZgD2YHa18" 
id="__w2_wZgD2YHa18_email">

如果我现在使用属性的名称,则可以使用以下命令在python上使用Selenium Webdriver提取属性。

dict['attribute'] = driver.find_element_by_xpath(x_path).get_attribute(attribute)

所以我的输出将是

dict = { 'attribute':value}

即使我不知道它具有什么所有属性,也请帮助我找出使用其值提取所有属性的方法。我的预期输出是

dict = { "class" : "text header_login_text_box ignore_interaction" 
        "type" : "text" 
        "name":"email" 
         "tabindex" : "1"
        "data-group" : "js-editable"
        "placeholder" : "Email"
        "w2cid" : "wZgD2YHa18" 
        "id" : "__w2_wZgD2YHa18_email"
        }

我不确定它能达到多远,但是我希望像在字典中一样,即使不知道键,我们也可以提取数据。 谢谢

3 个答案:

答案 0 :(得分:0)

定义要提取占位符的输入标签的xpath。

xpath_input = "//input[@id='__w2_wZgD2YHa18_email']"
driver.find_element_by_xpath(xpath_input)

获取元素后,您可以通过placeholder提取get_attribute("placeholder")(“电子邮件”)

答案 1 :(得分:0)

要获取preg_split('/\.[\s|$]/', $input_line);属性,请使用 var root = 'https://jsonplaceholder.typicode.com'; $.ajax({ url: root, method: 'GET', success: function(response) { console.log(response); jQuery.get('/posts', function(posts) { for (var i = 0; i < posts.length; i++) { document.write(posts[i]); } }); } });

placeholder

答案 2 :(得分:0)

要提取占位符文本(即电子邮件),您需要诱使 WebDriverWait 以使所需的元素可点击,然后使用{{1} }方法如下:

  • 代码行:

    get_attribute()
  • 控制台输出:

    print(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='text header_login_text_box ignore_interaction' and @name='email']"))).get_attribute("placeholder"))
    
  • 注意:您必须添加以下导入:

    Email