美文网首页python入门教程零基础学习
python3 爬虫学习:自动给你心上人的微博点赞(二)

python3 爬虫学习:自动给你心上人的微博点赞(二)

作者: python攻城狮 | 来源:发表于2020-04-29 13:39 被阅读0次
    selenium定位元素的八大方法:

    在开始登录前,咱们得先学习一下selenium定位元素的方法,不然找不到元素是没办法完成自动操作

    <!--> 假设有个html页面如下代码所示<-->
    <html>
      <body>
    
      <div id = 'test'>
        <a href = 'http://www.baidu.com'> 百度 </a>
      </div>
    
      <div class = 'article' >
        <input id="loginname" type="text" class="W_input " maxlength="128" autocomplete="off" action-type="text_copy" name="username" node-type="username" >
        <p name = 'python'>python工程狮</p>
      </div>
    
      </body>
    </html>
    
    1. find_element_by_id()
    element是要素的意思,这个方法整句翻译过来的意思就是:通过id属性来查找元素
    
    driver.find_element_by_id('test')
    
    #我们对比上面的html代码可以知道,id属性为‘test’的只有一个代码块,就是<div id = 'test'>
    
    1. find_element_by_name()
    通过name属性来查找元素
    
    test = driver.find_element_by_name('python')         #找到name属性为‘python’的p标签
    print(test.text)              #结合text方法,输出:python工程狮
    
    1. find_element_by_class_name()
    通过class的属性名来查找元素
    
    driver.find_element_by_class_name('article')    #查找class的属性名为‘article’的元素
    
    
    1. find_element_by_tag_name()
    通过标签名来查找元素
    
    driver.find_element_by_tag_name('a')      #查找‘a’标签
    
    1. find_element_by_link_text()
    通过链接的文本来查找元素
    
    a = driver.find_element_by_link_text('百度')       #查找链接文本为‘百度’的元素
    link = a['href']           #获取该元素的链接
    
    1. find_element_by_partial_link_text()
    通过链接的部分文本来查找元素
    
    a = driver.find_element_by_link_text('度')       #查找链接的部分文本为‘度’的元素
    link = a['href']           #获取该元素的链接
    
    1. find_element_by_xpath()
    xpath是XML路径语言,通过元素的路径来查找元素
    
    driver.find_element_by_link_text(//*[@id="pl_login_form"]/div/div[3]/div[2]/div/input)
    

    可直接右键选中需要查找的元素,选择copy xpath即可复制到该元素的绝对路径


    更多find_element_by_xpath()使用介绍可以自行百度了解
    1. find_element_by_css_selector()
    通过CSS属性来查找元素
    
    driver.find_element_by_css_selector("input[id="loginname"]")
    

    更多find_element_by_css_selector()方法使用可点击此处查看

    selenium定位复数方法:
    1. find_elements_by_id()

    2. find_elements_by_name()

    3. find_elements_by_class_name()

    4. find_elements_by_tag_name()

    5. find_elements_by_link_text()

    6. find_elements_by_partial_link_text()

    7. find_elements_by_xpath()

    8. find_elements_by_css_selector()

    使用方法与上面介绍的方法一样,只是在element后加了s,是element的复数形式,可以查找满足条件的所有元素

    自动登录微博

    咱们先来定位微博登录的相关元素位置

    用户名输入框

    用户名输入框
    密码输入框
    密码输入框
    登录按钮
    登录按钮
    from selenium import webdriver
    import time
    
    # 打开Chrome 浏览器
    browser = webdriver.Chrome()
    # 打开微博网页
    browser.get('https://weibo.com')
    
    #微博加载比较慢,我们给它设置15s的打开时间,然后关闭浏览器
    time.sleep(15)
    
    #查找微博用户名输入框
    user_name = browser.find_element_by_css_selector("#loginname")
    #查找id = 'loginname'的元素
    
    #将用户名发送到用户名输入框
    user_name.send_keys("你的用户名")
    #send_keys()方法,用于模拟键盘输入
    
    #查找微博密码输入框
    pass_word = browser.find_element_by_css_selector(".info_list.password input[node-type='password']")
    #查找父元素为calss = 'info_list password'的子元素为node-type='password'的input标签
    
    #将密码发送到密码输入框
    pass_word.send_keys("你的密码")
    
    #查找微博登录按钮
    register = browser.find_element_by_css_selector(".info_list.login_btn a[node-type='submitBtn']")
    #查找父元素为calss = 'info_list login_btn' 的子元素node-type='submitBtn'的a标签
    
    #模拟鼠标点击登录
    register.click()
    #click()方法,用于模拟鼠标点击元素
    
    time.sleep(20)
    
    # 关闭浏览器
    browser.quit()
    
    输出结果预览
    下一节,咱们就开始给心上人的微博点赞啦,点此继续学习~

    相关文章

      网友评论

        本文标题:python3 爬虫学习:自动给你心上人的微博点赞(二)

        本文链接:https://www.haomeiwen.com/subject/emvgwhtx.html