使用selenium爬取51Job职位信息 入库mongoDB
2021/8/21 19:06:18
本文主要是介绍使用selenium爬取51Job职位信息 入库mongoDB,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
selenium_51job_com.py
#!/usr/bin/env python3 # coding=utf-8 # Version:python3.6.1 # File:51job_com.py # Author:LGSP_Harold import pymongo from selenium import webdriver from selenium.webdriver.firefox.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from lxml import etree import time class HandleWebdriver: def __init__(self): # 设置无头模式 options = Options() options.add_argument('--headless') self.browser = webdriver.Firefox(firefox_options=options) # self.browser.maximize_window() def handle_job(self): # 打开目的地址 self.browser.get( 'https://search.51job.com/list/000000,000000,0000,00,9,99,+,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=') # 通过WebDriverWait进行显式等待,等待搜索框 if WebDriverWait(self.browser, 5, 0.5).until(EC.presence_of_element_located((By.ID, 'keywordInput'))): # 外部获取输入岗位信息 input_keyword = input('请输入要查找的岗位:') # 将要查找的信息发送到搜索框 self.browser.find_element_by_id('keywordInput').send_keys(input_keyword) # 点击搜索 self.browser.find_element_by_id('search_btn').click() if WebDriverWait(self.browser, 5, 0.5).until(EC.presence_of_element_located((By.CLASS_NAME, 'j_joblist'))): # 查看网页源代码 # print(self.browser.page_source) while True: time.sleep(2) self.handle_parse(self.browser.page_source) try: if self.browser.find_element_by_xpath('//li[@class="next"]/a'): self.browser.find_element_by_xpath('//li[@class="next"]/a').click() except: break self.browser.quit() def handle_parse(self, page_source): html_obj = etree.HTML(page_source) items = html_obj.xpath('//div[@class="j_joblist"]/div[@class="e"]') data_list = [] for item in items: data = {} data['job_name'] = item.xpath('.//a/p[@class="t"]/span[@class="jname at"]/text()')[0] data['time'] = item.xpath('.//a/p[@class="t"]/span[@class="time"]/text()')[0] try: data['money'] = item.xpath('.//a/p[@class="info"]/span[@class="sal"]/text()')[0] except: data['money'] = '面议' data['address'] = item.xpath('.//a/p[@class="info"]/span[@class="d at"]/text()')[0] try: tags = item.xpath('.//a/p[@class="tags"]/span/i/text()') text = '' for tag in tags: text += tag + ' | ' data['tags'] = text except: data['tags'] = '暂无' data_list.append(data) # print(data_list) self.handle_mongodb(data_list) def handle_mongodb(self, data_list): client = pymongo.MongoClient('mongodb://admin:admin@127.0.0.1:27017') db = client['db_51job_com'] collections = db['collections_51job'] collections.insert_many(data_list) selenium = HandleWebdriver() selenium.handle_job()
这篇关于使用selenium爬取51Job职位信息 入库mongoDB的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享
- 2024-12-10搭建个人博客网站之一、使用hugo创建个人博客网站