点击蓝色“ 不太灵光的程序员”关注我哟

加个“星标”,每天上午 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进行爬取相关推荐

  1. python3 爬虫 requests安装_BOSS直聘招聘信息获取之爬虫工具分析

    点击蓝色"不太灵光的程序员"关注我哟 加个"星标",每天上午 09:30,干货推送! 文中使用的组件库仅限于Python语言,由于最近收到一些同学的留言说,按照 ...

  2. python爬取招聘信息_python 爬取boss直聘招聘信息实现

    原标题:python 爬取boss直聘招聘信息实现 1.一些公共方法的准备 获取数据库链接: importpymysql ''' 遇到不懂的问题?Python学习交流群:821460695满足你的需求 ...

  3. python爬取boss直聘招聘信息_Python 爬取boss直聘招聘信息!

    原标题:Python 爬取boss直聘招聘信息! 1.一些公共方法的准备 获取数据库链接: importpymysql ''' 遇到不懂的问题?Python学习交流群:821460695满足你的需求, ...

  4. 基于‘BOSS直聘招聘信息’分析企业到底需要什么样的PHPer

    基于'BOSS直聘招聘信息'分析企业到底需要什么样的PHPer 前两篇文章都没看,好意思直接看结果? Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息 Pyhton爬虫实战 - 抓取 ...

  5. python爬取boss直聘招聘信息_Python爬虫实战-抓取boss直聘招聘信息

    Python Python开发 Python语言 Python爬虫实战-抓取boss直聘招聘信息 实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Pyth ...

  6. python爬取网站时,一键获取headers、url等信息(真的是让我爬取网站时,省了不少力气,作为小秘密分享给大家喽)

    python爬取网站时,一键获取headers.url等信息 (真的是让我爬取网站时,省了不少力气,作为小秘密分享给大家喽) 作为Python的使用者,我今天就和大家来分享分享我学习python的经验 ...

  7. python爬取boss直聘招聘信息_Python笔记-爬取Boss直聘的招聘信息

    2018-05-09笔记: 最近迷上了爬虫,爬取招聘信息,存在MongoDB上 代码思路和上一篇爬取酷狗TOP500差不多,但是在使用CSS选择器的时候,有两组信息是连在一起,所以使用正则来获取 本来 ...

  8. python爬取boss直聘招聘信息_python学习之路-爬取boss直聘的岗位信息

    背景 想了解从事python相关岗位需要具备什么技能,于是就想从招聘网站上的职位需求入手,把信息获取下来后,生成词云,这样就能很直观的看出来哪些技能是python相关岗位需要具备的了. 技术概览 sc ...

  9. python 爬取boss直聘招聘信息实现

    1.一些公共方法的准备 获取数据库链接: import pymysql ''' 遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载! ''' ...

最新文章

  1. iOS实现tableViewCell或collectionCell中点击界面按钮跳转
  2. 软件系统理想主义之殇
  3. 如何計算SDRAM使用頻寬?
  4. Mybatis-Plus插件配置
  5. 【Socket网络编程】1.bind()和 INADDR_ANY 解析
  6. NoSQL还是SQL?这一篇讲清楚
  7. 理论+技术+代码已经准备完毕!2021年啃透花书!
  8. 边记边学PHP-(十五)MySQL数据库基础操作2
  9. Mesos源码分析(9): Test Framework的启动
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的企业审批管理系统
  11. 使用Mysql进行分页与排序
  12. 读美国教授写给被开除中国留学生的信感悟
  13. Win7系统中unity web player是什么程序
  14. 在火狐(Firefox)浏览器中安装IE Tab插件
  15. Android中的Drawable(一)
  16. 讲台计算机的英语怎么读,讲台的英语单词怎么写,英语怎么拼写!
  17. 第12章实验1:学生成绩管理系统V5.0(c语言)
  18. 数据库并发抢红包_微信高并发抢红包秒杀实战案例
  19. 有趣的程序代码c语言,一个有趣的小程序
  20. python openpyxl 新建 excel xlsx

热门文章

  1. 【Leetcode_easy】1078. Occurrences After Bigram
  2. 微服务之SpringCloud实战(五):SpringCloud Eureka详解
  3. OAuth2.0(基于django2.1.2实现版本)
  4. 移动web开发-------meta
  5. Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
  6. IOS-项目中常见文件介绍
  7. 改变kingcms默认拼音路径格式/修改kingcms拼音路径
  8. The last time...
  9. 解决IDEA中自动生成返回值带final修饰的问题
  10. 解决VMware虚拟机网络时长中断的问题