1、环境python2.7+selenium+PhantomJS(软件安装和库的安装网上都有教程我们跳过,so easy)

2、原理

绕过首页登录需要验证码,直接进入搜索栏,输入搜索的职位+地区搜索出职位列表,点击全选,选择该页的所有工作,当然培训的也选起了,未做筛选的工作,亲们可以加上,第一次提交不需要验证码,第二次提交就需要验证码了,手动输入,验证码输入用的raw_input,输入之后程序继续运行,往复操作,总的来说也不智能,需要修改的地方很多,就当大家了解下selenium+PhantomJS的功能。

3、贴上代码

#!/usr/bin/Python
# -*- coding: utf-8 -*-
import os
from selenium import webdriver
import urllib2
import time
from os import path
import image
d = path.dirname(__file__)
class Zhilian:
def __init__(self):
self.arr = []
print 1
def main(self, browser):
'''函数主体'''
try:
for v in browser.find_elements_by_class_name('newlist'):
job_name = v.find_element_by_class_name('zwmc').text
price = v.find_element_by_class_name('zwyx').text
print job_name+'-'+price
except:
print 'select error!!'
time.sleep(2)
###获取用户信息
user_name = browser.find_element_by_xpath('/html/body/div[1]/div[1]/div/div/div[1]').text
try:
user_name = browser.find_element_by_xpath('/html/body/div[1]/div[1]/div/div/div[1]').text
if user_name ==u'登录注册':
is_logined = 0
else:
is_logined = 1
except:
print 'head error!!'
try:
browser.find_element_by_xpath('//*[@id="checkbox4al2"]').click()
browser.find_element_by_xpath('//*[@id="newlist_list_div"]/p[1]/a[1]').click()
except:
print 'error'
time.sleep(2)
####第一次需要执行登录
print is_logined
test(browser)
if is_logined == 0:
try:
time.sleep(3)
####开始输入你的用户名和密码
name = raw_input('please input your zhilian user_name: ')
pwd = raw_input('Please input your zhilian password: ')
browser.find_element_by_xpath('//*[@id="simplaceholder"]').clear()
browser.find_element_by_xpath('//*[@id="simplaceholder"]').send_keys(name)
browser.find_element_by_xpath('//*[@id="loginBlock"]/form/ul/li[3]/label/input').clear()
browser.find_element_by_xpath('//*[@id="loginBlock"]/form/ul/li[3]/label/input').send_keys(pwd)
browser.find_element_by_xpath('//*[@id="submitBlock"]/div[1]/a').click()
print 'login success!!'
except:
print "login false or or this account is online!!"
time.sleep(3)
##第二次开始需要填入验证码
try:
if browser.find_element_by_xpath('//*[@id="validate"]'):
###开始截图
browser.get_screenshot_as_file(path.join(d,'1.png'))
###自动打开截图
####根绝截图输入验证码
os.system('start E:\\test\\zhilian\\1.png')
###开始输入验证码
code = raw_input('please input the code: ')
###将验证码放入输入框
browser.find_element_by_xpath('//*[@id="validate"]').clear()
browser.find_element_by_xpath('//*[@id="validate"]').send_keys(code)
browser.find_element_by_xpath('//*[@id="applynowbutton"]').click()
print 'apply success!!'
except:
print 'code error!!'
###开始查询下一页
print 'We can select next page!!'
next_page = browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[3]/form/div[1]/div[1]/div[3]/ul/li[7]/a')
if next_page:
browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[3]/form/div[1]/div[1]/div[3]/ul/li[7]/a').click()
self.main(browser) '''
try:
next_page = browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[3]/form/div[1]/div[1]/div[3]/ul/li[7]/a')
if next_page:
self.main(city,job,page)
except:
print 'this is the last page!!'
'''
def check():
job = raw_input('please input the job name which you want to select: ')
city = raw_input('please input the city name which you want to select: ')
answer = raw_input('Do you sure the city name is "'+city+'" and the job name is "'+job+'", please input yes or no to check: ')
if answer =='yes':
###确认无误
list = []
list.append(city)
list.append(job)
else:
check()
if list:
return list def test(browser):
'''测试函数'''
###开始截图
browser.get_screenshot_as_file(path.join(d,'1.png'))
###自动打开截图
####根绝截图输入验证码
os.system('start E:\\test\\zhilian\\1.png') if __name__ == '__main__':
zhilian = Zhilian()
###设置关键字
list = check()
page=1
city = list[0].decode('gbk')
job = list[1].decode('gbk')
browser = webdriver.PhantomJS('E:\\p_python\\Scripts\\phantomjs\\bin\\phantomjs.exe')
#browser.get('http://www.baidu.com')
browser.get('http://sou.zhaopin.com/jobs/searchresult.ashx')
time.sleep(3)
####开始模拟搜索条件
try:
browser.find_element_by_xpath('//*[@id="KeyWord_kw2"]').clear()
browser.find_element_by_xpath('//*[@id="KeyWord_kw2"]').send_keys(job)
browser.find_element_by_xpath('//*[@id="JobLocation"]').clear()
browser.find_element_by_xpath('//*[@id="JobLocation"]').send_keys(city)
browser.find_element_by_xpath('//*[@id="searchForm"]/form/div[6]/button').click()
except:
print 'input select_info error!!'
time.sleep(2)
zhilian.main(browser)
#test()

python+selenium+PhantomJS批量投递智联简历(不要用自己的账号进行测试,请使用小号,很烦人的,哈哈哈)的更多相关文章

  1. Python + Selenium +Chrome 批量下载网页代码修改【新手必学】

    Python + Selenium +Chrome 批量下载网页代码修改主要修改以下代码可以调用 本地的 user-agent.txt 和 cookie.txt来达到在登陆状态下 批量打开并下载网页, ...

  2. python selenium+phantomjs alert()弹窗报错

    问题:用selenium+phantomjs 模拟登陆,网页用JavaScript的alert("登陆成功")弹出框,但是用switch_to_alert().accept()报错 ...

  3. python+selenium+PhantomJS爬取网页动态加载内容

    一般我们使用python的第三方库requests及框架scrapy来爬取网上的资源,但是设计javascript渲染的页面却不能抓取,此时,我们使用web自动化测试化工具Selenium+无界面浏览 ...

  4. 看我怎么扒掉CSDN首页的底裤(python selenium+phantomjs爬取CSDN首页内容)

    这里只是学习一下动态加载页面内容的抓取,并不适用于所有的页面. 使用到的工具就是python selenium和phantomjs,另外调试的时候还用了firefox的geckodriver.exe. ...

  5. python + selenium + PhantomJS 获取腾讯应用宝APP评论

    PhantomJS PhantomJS 是一个基于WebKit的服务器端JavaScript API,它无需浏览器的支持即可实现对Web的支持,且原生支持各种Web标准,如DOM 处理.JavaScr ...

  6. 基于Python, Selenium, Phantomjs无头浏览器访问页面

    引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...

  7. python+Selenium PhantomJS网页截图

    PhantomJS是一个基于webkit的JavaScript API.它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码.任何你可以在基于webki ...

  8. Python+Selenium+PhantomJS下载JavaScript异步加载网页

    # -*- coding: utf-8 -*- from selenium import webdriver import selenium.webdriver.support.ui as ui fr ...

  9. Python Selenium + phantomJS 模拟登陆教务管理系统 “抢课”

    # _*_coding:utf-8_*_ from selenium import webdriver from selenium.webdriver.common.action_chains imp ...

随机推荐

  1. python3+Flask 链接MySQL 时,提示“No module named MYSQLdb”

    python3+flask 链接Mysql时提示“No module named MYSQLdb” 解决: pip install mysqlclient

  2. py-day1 pycharm 的安装 以及部分设置

    配置变量    用 :分割 pycharm 的安装: https://blog.csdn.net/bfqs1988/article/details/85250950 要装就装 专业版 不要汉化 破解时 ...

  3. Hbase 简介+环境安装配置教程

    HBase介绍 HBase是参考google的bigtable的一个开源产品,建立在hdfs之上的一个提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.是一种介于nosql和RDBMs之间的 ...

  4. 找出n个数中重复最多的10个数

    题目很清晰,直接上python代码 import pandas as pd import copy class BenchMark: def __init__(self): self.MIN = 10 ...

  5. Simple Logging Facade for Java 简单日志门面(Facade)

    SLF4J是为各种 loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现.Logging API实现既可以选择直接实现SLF4J接口的 ...

  6. SourceInsight宏插件1(非常好用,强力推荐)

    对于一直使用sourceinsight编辑C/C++代码的工程师们,sourceinsight是一个非常好用的编辑工具可以任意定位,跳转,回退,本人一直使用该工具做C/C++开发,sourceinsi ...

  7. spring4与mongodb的集成

    新项目的辅助系统,需要用到mongo系统,今天再次将其使用环境进行了操作搭建.还是遇到一些问题,毕竟之前使用的场景和现在的不同.版本也不一样了. 本次使用的环境: mongo:3.4.4版本 OS: ...

  8. MySQL GTID 错误处理汇总

    MySQL GTID是在传统的mysql主从复制的基础之上演化而来的产物,即通过UUID加上事务ID的方式来确保每一个事物的唯一性.这样的操作方式使得我们不再需要关心所谓的log_file和log_P ...

  9. PByte和PChar的关系

    作为指针是相同的, 解析的内容,稍微有点区别. var s:String;P:PChar;B:PByte;a:Integer;begin  s:='1234';  P:=PChar(s);//按chr ...

  10. NutzWk 开发框架

    官网: https://wizzer.cn/ 源码下载: https://github.com/wizzercn/NutzWk/ https://gitee.com/wizzer/NutzWk Int ...