python+selenium+PhantomJS批量投递智联简历(不要用自己的账号进行测试,请使用小号,很烦人的,哈哈哈)
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批量投递智联简历(不要用自己的账号进行测试,请使用小号,很烦人的,哈哈哈)的更多相关文章
- Python + Selenium +Chrome 批量下载网页代码修改【新手必学】
		
Python + Selenium +Chrome 批量下载网页代码修改主要修改以下代码可以调用 本地的 user-agent.txt 和 cookie.txt来达到在登陆状态下 批量打开并下载网页, ...
 - python selenium+phantomjs  alert()弹窗报错
		
问题:用selenium+phantomjs 模拟登陆,网页用JavaScript的alert("登陆成功")弹出框,但是用switch_to_alert().accept()报错 ...
 - python+selenium+PhantomJS爬取网页动态加载内容
		
一般我们使用python的第三方库requests及框架scrapy来爬取网上的资源,但是设计javascript渲染的页面却不能抓取,此时,我们使用web自动化测试化工具Selenium+无界面浏览 ...
 - 看我怎么扒掉CSDN首页的底裤(python selenium+phantomjs爬取CSDN首页内容)
		
这里只是学习一下动态加载页面内容的抓取,并不适用于所有的页面. 使用到的工具就是python selenium和phantomjs,另外调试的时候还用了firefox的geckodriver.exe. ...
 - python + selenium + PhantomJS 获取腾讯应用宝APP评论
		
PhantomJS PhantomJS 是一个基于WebKit的服务器端JavaScript API,它无需浏览器的支持即可实现对Web的支持,且原生支持各种Web标准,如DOM 处理.JavaScr ...
 - 基于Python, Selenium, Phantomjs无头浏览器访问页面
		
引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...
 - python+Selenium PhantomJS网页截图
		
PhantomJS是一个基于webkit的JavaScript API.它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码.任何你可以在基于webki ...
 - Python+Selenium+PhantomJS下载JavaScript异步加载网页
		
# -*- coding: utf-8 -*- from selenium import webdriver import selenium.webdriver.support.ui as ui fr ...
 - Python Selenium + phantomJS 模拟登陆教务管理系统  “抢课”
		
# _*_coding:utf-8_*_ from selenium import webdriver from selenium.webdriver.common.action_chains imp ...
 
随机推荐
- Python 处理JSON数据报错解决办法
			
春节期间通过接口爬取携程数据的时候,返回的json字符串通过json.loads加载时报错"ValueError: Invalid control character at: line 1 ...
 - PyCharm 设置Python 文件头部模板
			
1. 菜单栏-> File -> Settings -> Editor -> File and Code Templates ->Python Script 2.配置头文 ...
 - 洛谷 4383 [八省联考2018]林克卡特树lct——树形DP+带权二分
			
题目:https://www.luogu.org/problemnew/show/P4383 关于带权二分:https://www.cnblogs.com/flashhu/p/9480669.html ...
 - JAVA_HOME 设置为JDK 7无效
			
场景: Window 10中有Jdk 7和jdk8, 还有Oracle配置 环境变量的配置如下 然后JAVA_HOME 设置为java 7 但是java -version显示为java 8 解决方法 ...
 - Hive DDL及DML操作
			
一.修改表 增加/删除分区 语法结构 ALTER TABLE table_name ADD [IF NOT EXISTS] partition_spec [ LOCATION 'location1' ...
 - Linux VMware安装CentOS
			
VMware安装CentOS 1 检查BIOS虚拟化支持 2 新建虚拟机 3 新建虚拟机向导 4 创建虚拟空白光盘 ...
 - HanLP用户自定义词典源码分析详解
			
1. 官方文档及参考链接 l 关于词典问题Issue,首先参考:FAQ l 自定义词典其实是基于规则的分词,它的用法参考这个issue l 如果有些数量词.字母词需要分词,可参考:P2P和C2C这种词 ...
 - S2算法应用
			
需求:计算不同区域范围,X公里半径内实体店或场站覆盖率. 实现思路: 为了便于理解,将地球看成一个基于经纬度线的坐标系.将经度和纬度看成二维坐标系中的两个纬度,横轴表示经度[-180o, 0o),(0 ...
 - Android 项目中的资源获取方法
			
Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件 ...
 - git初始化项目 以及  git常用操作
			
初始化项目 $ git config --global user.name "Your Name" 配置用户名 $ git config --global user.email ...