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. Wireshark常用过滤使用方法

    过滤源ip.目的ip. 在wireshark的过滤规则框Filter中输入过滤条件.如查找目的地址为192.168.101.8的包,ip.dst==192.168.101.8:查找源地址为ip.src ...

  2. reduceByKey和groupByKey区别与用法

    在spark中,我们知道一切的操作都是基于RDD的.在使用中,RDD有一种非常特殊也是非常实用的format——pair RDD,即RDD的每一行是(key, value)的格式.这种格式很像Pyth ...

  3. 大数据离线分析平台 JavaSDK数据收集引擎编写

    JavaSDK设计规则 JavaSDK提供两个事件触发方法,分别为onChargeSuccess和onChargeRefund.我们在java sdk中通过一个单独的线程来发送线程数据,这样可以减少对 ...

  4. [转]Python 模块收集

    Python 模块收集 转自:http://kuanghy.github.io/2017/04/04/python-modules Python | Apr 4, 2017 | python 工具 a ...

  5. Spring Cloud(Dalston.SR5)--Eureka 注册中心搭建

    基于 Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能,服务治理可以说是微服务架构中最为核心和基础的模块,他主要用来实现各个微服务实例的自动化注册与发现 服务注册:在 ...

  6. VGA原理

    VGA原理 1.VGA时序 2.不同的显示标准,有不同的水平段和垂直段 3.像素时钟和帧频的关系 联系目前调试的1080i 50Hz: 像素时钟为148.5MHz, 水平段周期 = 2640 X (1 ...

  7. c# 几种常见的弹框方法

    1.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('第一行'); ...

  8. java线程调度原则

    线程的调度采用占先原则,优先级越高的线程越优先执行.每个JAVA线程优先级有设置在常数1-10的范围,默认值是5.但优先级高并不代表能独自占用执行时间片,而是优先级越高得到越多的执行时间片,反之,优先 ...

  9. pytest.4.Fixture

    From: http://www.testclass.net/pytest/fixture/ 我们可以简单的把Fixture理解为准备测试数据和初始化测试对象的阶段. 一般我们对测试数据和测试对象的管 ...

  10. CentOS7切换到root用户和退回普通用户

    切换成root用户: sudo su - 退出root用户并切换回普通用户: exit