python+selenium实现58同城简历自动刷新,永排第一

  最近想试试找工作,所以在58同城上放了简历,这个网站的简历管理里有一个功能,就是刷新,每刷一次,自己简历就会变成刚刚修改过的,排在该类的最前面,相当于手工置顶。


  于是我想用python来实现自动点击。网上找了很多资料,有两个包很合适,一个是splinter,一个是selenium。


刚开始我用splinter,结果没装firefox,就去装了。


#coding=utf-8
import time
from splinter import Browser


def splinter(url):
    browser = Browser()
    
    #进入网站
    browser.visit(url)
    
    #选择邮箱登陆
    browser.find_by_id('login_tab_orig').click()
    
    #填写账号密码
    browser.find_by_id('username_new').fill('[email protected]')
    browser.find_by_id('password_new').fill('xxxxxxxxxx')
   
    #点击登陆按钮
    browser.find_by_id('btnSubmit_new').click()
    
    #打开我的简历菜单
    browser.find_by_id('menu4').click()
    
    #打开简历管理
    browser.find_by_id('20').click()
    
    


if __name__ == '__main__':
    websize ='https://passport.58.com/login?path=http://my.58.com/?pts=xxxxxxxxx'
    splinter(websize)


splinter登陆,点击,打开菜单都可以,但是最后点击就是找不到刷新那个按钮,各种办法都试了。css,id,name,text,link,都找过,不行。


后来用selenium试试,跟之前的情况一样,也是到最后也一步找不到刷新按钮在哪儿。


再搜索,发现有一个selenium IDE可以装在Firefox上,录制我的网页操作,我去装了,这个很爽,网页上的点击,输入,移动,都可以录下来,可以回放,可以导出成各种语言的代码,我选了python,后来一看,发现在最后那个页面,简历和相关的功能是在另一个Frame里面,难怪之前一直找不都。


于是就加了driver.switchto().frame('ContainerFrame‘),后面是那个frame的名字


然后再在这个frame里寻找text ‘刷新’,就可以找到了。

代码很直白,没有用class,函数等,直接运行。


# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import time


driver = webdriver.Firefox()
driver.implicitly_wait(30)
base_url = "http://wh.58.com/"
driver.get(base_url + "/")
driver.find_element_by_id("tomy58").click()
driver.find_element_by_id("login_tab_orig").click()
driver.find_element_by_id("username_new").clear()
driver.find_element_by_id("username_new").send_keys("lx'x'x'x'x'x'x")
driver.find_element_by_id("password_new").clear()
driver.find_element_by_id("password_new").send_keys("xxxxxxx")
driver.find_element_by_id("btnSubmit_new").click()
driver.find_element_by_id("menu4").click()
driver.find_element_by_id("20").click()

#这之前的跟splinter一样,下面进入frame


driver.switch_to.frame("ContainerFrame")

#设置一个无限循环,但是隔五秒刷新,以免太快出问题。

#有一点特别注意,因为有多个简历,刷新这个词不止一个,

#所以我把找到的元素存进列表,循环点击。

while True:
    list = driver.find_elements_by_link_text(u"刷新")
    for i in range(3):
        list[i].click()
    
    time.sleep(5)


有个小细节,在‘刷新’前,加了一个字母u,这是专门处理汉字的。

另外list不能放在while循环之外,我试过,后来说每次遍历之后,刷新的位置改变,无法找到,所以只能每次重新找一次。


最后在selenium中,find_elements_by_,,,,,,和find_element_by.......,这两个只有一个s的区别,但是前者可以找到多个特征相同的元素,后者只有一个。


通过python+selenium实现了58同城的自动登录,打开简历管理页面,并自动反复刷新所有简历,永远排在前面。

你可能感兴趣的:(应用)