chrome driver 获取 session_BOSS直聘招聘信息获取之使用webdriver进行爬取
点击蓝色“ 不太灵光的程序员”关注我哟
加个“星标”,每天上午 09:30,干货推送!
进行网页数据爬取的方式有很多,我前面使用了requests模块添加浏览器的cookies来对页面数据进行爬取的,那我们是不是可以直接使用浏览器来获取数据呢,当然是可以的。
虽然boss对这种自动化测试软件也是做了限制的,但是比上一版的爬虫程序来说还是可以爬到更多的数据,BOSS的反爬策略:
前几次使用自动化爬取时会提示进行活体验证
再继续爬的话就会被限制访问,当然不会影响你登录的用户
密码登录这个时候也会被策略限制,智能扫码登录了
可以操作浏览器的模块
WebDriver
导入浏览器驱动,用get方法打开浏览器,例如:
import timefrom selenium import webdriver
def mac(): driver = webdriver.Chrome() //打开Chrome浏览器# driver = webdriver.Firefox() //打开Firefox浏览器# driver = webdriver.Ie() //打开IE浏览器 driver.implicitly_wait(5) driver.get("http://www.baidu.com")
chromedriver.exe的下载地址为 http://chromedriver.storage.googleapis.com/index.html
选择版本是看下安装的浏览器版本,需要和它是一致的。
webbrowser
通过导入python的标准库webbrowser打开浏览器,例如:
import webbrowserwebbrowser.open("C:\\Program Files\\Internet Explorer\\iexplore.exe")webbrowser.open("C:\\Program Files\\Internet Explorer\\iexplore.exe")
Splinter
Splinter的使用必修依靠Cython、lxml、selenium这三个软件。所以,安装前请提前安装
Cython、lxml、selenium。以下给出链接地址:
1)http://download.csdn.net/detail/feisan/4301293
2)http://code.google.com/p/pythonxy/wiki/AdditionalPlugins#Installation_no
3)http://pypi.python.org/pypi/selenium/2.25.0#downloads
4)http://splinter.cobrateam.info/
#coding=utf-8import timefrom splinter import Browser
def splinter(url): browser = Browser() #login 126 email websize browser.visit(url) #wait web element loading time.sleep(5) #fill in account and password browser.find_by_id('idInput').fill('xxxxxx') browser.find_by_id('pwdInput').fill('xxxxx') #click the button of login browser.find_by_id('loginBtn').click() time.sleep(8) #close the window of brower browser.quit()
if __name__ == '__main__': websize3 ='http://www.126.com' splinter(websize3)
我们这次使用的是WebDriver
WebDriver常用方法
可以使用
get
方法请求网页find_element
可以查找元素find_element_by_xx
提供对 id、name、class_name等的查询send_keys
输入click
点击按钮、连接等text
获取元素的文本
爬虫程序
# -*- coding: utf-8 -*-from bs4 import BeautifulSoup as bsfrom selenium import webdriverimport timeHOST = "https://www.zhipin.com"
def extract_data(content):# 处理职位列表 job_list = []for item in content.find_all(class_="job-primary"): job_title = item.find("div", attrs={"class": "job-title"}) job_name = job_title.a.attrs["title"] job_href = job_title.a.attrs["href"] data_jid = job_title.a['data-jid'] data_lid = job_title.a["data-lid"] job_area = job_title.find(class_="job-area").text
job_limit = item.find(class_="job-limit") salary = job_limit.span.text exp = job_limit.p.contents[0] degree = job_limit.p.contents[2]
company = item.find(class_="info-company") company_name = company.h3.a.text company_type = company.p.a.text
stage = company.p.contents[2] scale = company.p.contents[4] info_desc = item.find(class_="info-desc").text tags = [t.text for t in item.find_all(class_="tag-item")] job_list.append([job_area, company_type, company_name, data_jid, data_lid, job_name, stage, scale, job_href, salary, exp, degree, info_desc, "、".join(tags)])return job_list
def get_job_text(driver):""" 通过driver.text 也可以获取到页面数据 但是解析不太方便 """ time.sleep(5) job_list = driver.find_elements_by_class_name("job-primary")for job in job_list:print job.text
def main(host): chrome_driver = "chromedriver.exe" driver = webdriver.Chrome(executable_path=chrome_driver) driver.get(host)# 获取到查询框 输入查询条件 driver.find_element_by_name("query").send_keys("python")# 点击查询按钮 driver.find_element_by_class_name("btn-search").click()
job_list = []while 1: time.sleep(5) content = driver.execute_script("return document.documentElement.outerHTML") content = bs(content, "html.parser") job_list += extract_data(content) next_page = content.find(class_="next")if next_page: driver.find_element_by_class_name("next").click()else:break
driver.close()
if __name__ == "__main__": main(HOST)
end
推荐阅读:
BOSS直聘招聘信息获取之网站分析
BOSS直聘招聘信息获取之爬虫工具分析
BOSS直聘招聘信息获取之爬虫程序分析
如有收获,点个在看,诚挚感谢
chrome driver 获取 session_BOSS直聘招聘信息获取之使用webdriver进行爬取相关推荐
- python3 爬虫 requests安装_BOSS直聘招聘信息获取之爬虫工具分析
点击蓝色"不太灵光的程序员"关注我哟 加个"星标",每天上午 09:30,干货推送! 文中使用的组件库仅限于Python语言,由于最近收到一些同学的留言说,按照 ...
- python爬取招聘信息_python 爬取boss直聘招聘信息实现
原标题:python 爬取boss直聘招聘信息实现 1.一些公共方法的准备 获取数据库链接: importpymysql ''' 遇到不懂的问题?Python学习交流群:821460695满足你的需求 ...
- python爬取boss直聘招聘信息_Python 爬取boss直聘招聘信息!
原标题:Python 爬取boss直聘招聘信息! 1.一些公共方法的准备 获取数据库链接: importpymysql ''' 遇到不懂的问题?Python学习交流群:821460695满足你的需求, ...
- 基于‘BOSS直聘招聘信息’分析企业到底需要什么样的PHPer
基于'BOSS直聘招聘信息'分析企业到底需要什么样的PHPer 前两篇文章都没看,好意思直接看结果? Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息 Pyhton爬虫实战 - 抓取 ...
- python爬取boss直聘招聘信息_Python爬虫实战-抓取boss直聘招聘信息
Python Python开发 Python语言 Python爬虫实战-抓取boss直聘招聘信息 实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Pyth ...
- python爬取网站时,一键获取headers、url等信息(真的是让我爬取网站时,省了不少力气,作为小秘密分享给大家喽)
python爬取网站时,一键获取headers.url等信息 (真的是让我爬取网站时,省了不少力气,作为小秘密分享给大家喽) 作为Python的使用者,我今天就和大家来分享分享我学习python的经验 ...
- python爬取boss直聘招聘信息_Python笔记-爬取Boss直聘的招聘信息
2018-05-09笔记: 最近迷上了爬虫,爬取招聘信息,存在MongoDB上 代码思路和上一篇爬取酷狗TOP500差不多,但是在使用CSS选择器的时候,有两组信息是连在一起,所以使用正则来获取 本来 ...
- python爬取boss直聘招聘信息_python学习之路-爬取boss直聘的岗位信息
背景 想了解从事python相关岗位需要具备什么技能,于是就想从招聘网站上的职位需求入手,把信息获取下来后,生成词云,这样就能很直观的看出来哪些技能是python相关岗位需要具备的了. 技术概览 sc ...
- python 爬取boss直聘招聘信息实现
1.一些公共方法的准备 获取数据库链接: import pymysql ''' 遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载! ''' ...
最新文章
- iOS实现tableViewCell或collectionCell中点击界面按钮跳转
- 软件系统理想主义之殇
- 如何計算SDRAM使用頻寬?
- Mybatis-Plus插件配置
- 【Socket网络编程】1.bind()和 INADDR_ANY 解析
- NoSQL还是SQL?这一篇讲清楚
- 理论+技术+代码已经准备完毕!2021年啃透花书!
- 边记边学PHP-(十五)MySQL数据库基础操作2
- Mesos源码分析(9): Test Framework的启动
- 基于JAVA+SpringMVC+Mybatis+MYSQL的企业审批管理系统
- 使用Mysql进行分页与排序
- 读美国教授写给被开除中国留学生的信感悟
- Win7系统中unity web player是什么程序
- 在火狐(Firefox)浏览器中安装IE Tab插件
- Android中的Drawable(一)
- 讲台计算机的英语怎么读,讲台的英语单词怎么写,英语怎么拼写!
- 第12章实验1:学生成绩管理系统V5.0(c语言)
- 数据库并发抢红包_微信高并发抢红包秒杀实战案例
- 有趣的程序代码c语言,一个有趣的小程序
- python openpyxl 新建 excel xlsx
热门文章
- 【Leetcode_easy】1078. Occurrences After Bigram
- 微服务之SpringCloud实战(五):SpringCloud Eureka详解
- OAuth2.0(基于django2.1.2实现版本)
- 移动web开发-------meta
- Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
- IOS-项目中常见文件介绍
- 改变kingcms默认拼音路径格式/修改kingcms拼音路径
- The last time...
- 解决IDEA中自动生成返回值带final修饰的问题
- 解决VMware虚拟机网络时长中断的问题