代码实现

#encoding: utf-8from selenium import webdriver
from lxml import etree
import re
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import Byclass LagouSpider(object):driver_path = r"D:\Program Files\chromedriver_win32\chromedriver.exe"def __init__(self):self.driver = webdriver.Chrome(executable_path=LagouSpider.driver_path)self.url = 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='self.positions = []def run(self):self.driver.get(self.url)while True:source = self.driver.page_sourceWebDriverWait(driver=self.driver,timeout=10).until(EC.presence_of_element_located((By.XPATH,"//div[@class='pager_container']/span[last()]")))self.parse_list_page(source)try:next_btn = self.driver.find_element_by_xpath("//div[@class='pager_container']/span[last()]")if "pager_next_disabled" in next_btn.get_attribute("class"):breakelse:next_btn.click()except:print(source)time.sleep(1)def parse_list_page(self,source):html = etree.HTML(source)links = html.xpath("//a[@class='position_link']/@href")for link in links:self.request_detail_page(link)time.sleep(1)def request_detail_page(self,url):# self.driver.get(url)self.driver.execute_script("window.open('%s')"%url)self.driver.switch_to.window(self.driver.window_handles[1])WebDriverWait(self.driver,timeout=10).until(EC.presence_of_element_located((By.XPATH,"//div[@class='job-name']/span[@class='name']")))source = self.driver.page_sourceself.parse_detail_page(source)# 关闭当前这个详情页self.driver.close()# 继续切换回职位列表页self.driver.switch_to.window(self.driver.window_handles[0])def parse_detail_page(self,source):html = etree.HTML(source)position_name = html.xpath("//span[@class='name']/text()")[0]job_request_spans = html.xpath("//dd[@class='job_request']//span")salary = job_request_spans[0].xpath('.//text()')[0].strip()city = job_request_spans[1].xpath(".//text()")[0].strip()city = re.sub(r"[\s/]", "", city)work_years = job_request_spans[2].xpath(".//text()")[0].strip()work_years = re.sub(r"[\s/]", "", work_years)education = job_request_spans[3].xpath(".//text()")[0].strip()education = re.sub(r"[\s/]", "", education)desc = "".join(html.xpath("//dd[@class='job_bt']//text()")).strip()company_name = html.xpath("//h2[@class='fl']/text()")[0].strip()position = {'name': position_name,'company_name': company_name,'salary': salary,'city': city,'work_years': work_years,'education': education,'desc': desc}self.positions.append(position)print(position)print('='*40)if __name__ == '__main__':spider = LagouSpider()spider.run()

网络爬虫--25.【selenium实战】实现拉勾网爬虫之--selenium获取数据相关推荐

  1. 爬虫股票交易接口系统怎么运用多空指标获取数据?

    多空指标也就是多数人所认知的技术分析,比如均线.KD.MACD.董诠通道.布林通道等大家耳熟能详的指标,场内游戏者希望能够藉此探知当前市场状态,是多或空.因此爬虫股票交易接口开发师在设计多空指标的时候 ...

  2. 爬虫基本原理与实战---1、爬虫实战概述

    一.开发前准备 1.开发环境准备 基础准备(win10) 参考:python2与python3共存安装 参考: pycharm安装及永久激活 参考: mysql及navicat安装与使用及navica ...

  3. python爬取数据情感分析_爬虫再探实战(五)———爬取APP数据——超级课程表【四】——情感分析...

    仔细看的话,会发现之前的词频分析并没有什么卵用...文本分析真正的大哥是NLP,不过,这个坑太大,小白不大敢跳...不过还是忍不住在坑边上往下瞅瞅2333. 言归正传,今天刚了解到boson公司有py ...

  4. 实战项目 78 : 从 Web API 获取数据

    这篇文章分享我的 Android 开发(入门)课程 的第七个和第八个实战项目:书籍列表应用和新闻应用.这两个项目都托管在我的 GitHub 上,分别是 BookListing 和 NewsApp 这两 ...

  5. Python大型网络爬虫项目开发实战

    1    讲师简介 2    课程简介及特色 实战精通Scrapy爬虫项目编写 "Scrapy是Python的一个非常流行的爬虫框架,使用Scrapy框架可以很方面做出大型爬虫项目,但Scr ...

  6. 《爬虫逆向进阶实战》书籍介绍

    <爬虫逆向进阶实战>书籍介绍 内容简介 <爬虫逆向进阶实战>以爬虫逆向方向的相关技术和岗位要求进行撰写,结合作者多年工作经验,总结了爬虫的架构体系.主流框架.技术体系和未来发展 ...

  7. 爬虫python教程百度云_Python爬虫比较基础的教程视频百度云网盘下载

    Python爬虫比较基础的教程视频百度云网盘下载,目录如下,给编程的朋友学习吧,请大家支持正版! QQ截图20180719110859.jpg (12.41 KB, 下载次数: 27) 2018-7- ...

  8. 网络爬虫--24.【selenium实战】实现拉勾网爬虫之--分析接口获取数据

    文章目录 一. 思路概述 二. 分析数据接口 三. 详细代码 一. 思路概述 1.拉勾网采用Ajax技术,加载网页时会向后端发送Ajax异步请求,因此首先找到数据接口: 2.后端会返回json的数据, ...

  9. Python教程:网络爬虫快速入门实战解析

    建议: 请在电脑的陪同下,阅读本文.本文以实战为主,阅读过程如稍有不适,还望多加练习. 网络爬虫简介 网络爬虫,也叫网络蜘蛛(Web Spider).它根据网页地址(URL)爬取网页内容,而网页地址( ...

  10. Python 爬虫---(7) Python3网络爬虫快速入门实战解析

    转载请注明作者和出处: http://blog.csdn.net/c406495762  Github代码获取:https://github.com/Jack-Cherish/python-spide ...

最新文章

  1. 电脑常用的几个快捷键
  2. react useRef()函数
  3. 配置连接池druid
  4. c++ auto 关键字
  5. mongodb distinct too large用 group
  6. phonegap在android中如何退出程序
  7. 初学者python书籍推荐_2019年Python入门书籍推荐
  8. 第五届新疆ACM H-虚无的后缀
  9. CentOS 安装VNC
  10. atitit.基于bat cli的插件管理系统.doc
  11. 史上最全idea插件开发入门实战(傻瓜式教程)
  12. 泰坦尼克数据集kaggle Titanic下载
  13. JDK源代码中最重要的4646个英语单词
  14. html鼠标悬停多个效果,33个jQuery与CSS3实现的绚丽鼠标悬停效果
  15. 三国志战略版:北定中原剧本个性加点指引
  16. 流媒体技术介绍(上)
  17. #8 实现指定函数swap(结构体)
  18. 图像变换(Image transformations)
  19. 360加速球 android,Android加速球、360加速球
  20. 墨迹天气携手友盟+U-APM,共同打造良好应用性能体验

热门文章

  1. 8款最受欢迎的HTML5/CSS3应用及代码
  2. 精益设计:“纸上谈兵”的说服力
  3. 享受阅读的十二个好习惯
  4. Math对象方法总结(向上取整、向下取整、四舍五入、取随机数,取最大值、取最小值)
  5. Java 8: LocalDate、LocalTime 、LocalDateTime 处理日期时间
  6. 神经网络优化(二) - 滑动平均
  7. 2016级算法第二次上机-F.ModricWang's Number Theory II
  8. 可以用什么代替平面镜
  9. jquery+easyui开发、培训文档
  10. 详解HashMap数据结构实现