Selenium实践->拉钩网招聘信息

博客介绍使用Selenium爬取拉钩网站,前提需掌握Selenium简要操作。爬取分三步,即获取列表页、获取详情页、点击获取下个列表页,并表示将直接贴代码。

在阅读以下内容前你需要懂得Selenium的一些简要操作,如果不会请查看上Selenium的简要操作。

爬取拉钩网站分为三步:获取列表页->获取详情页->点击获取下个列表页,话不多说直接贴代码吧!

from selenium import webdriver
from lxml import etree
import time
import re
class Lagou():
    def __init__(self):
        self.driver=webdriver.Chrome()
        self.url='https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='
    def run(self):
        self.driver.get(self.url)
        #print(self.driver.page_source)
        while True:
            source=self.driver.page_source
            self.parse_list(source)
            time.sleep(2)
            btn = self.driver.find_element_by_xpath('//*[@id="s_position_list"]/div[2]/div/span[6]')
            if 'pager_next pager_next_disabled' in btn.get_attribute('class'):
                break
            else:
                btn.click()
    def parse_list(self,source):
        html=etree.HTML(source)
        #详情页面
        links=html.xpath('//a[@class="position_link"]/@href')
        for link in links:
            #print(link)
            #让driver去请求详情页面
            self.request_detail(link)
            time.sleep(1)
    def request_detail(self,url):
        self.driver.execute_script("window.open('%s')"%url) #  打开另一个窗口
        self.driver.switch_to.window(self.driver.window_handles[1]) #  切换到另一个窗口
        source=self.driver.page_source
        self.parse_detail(source)
        self.driver.close()#关闭打开的窗口
        # 切换回第一页
        self.driver.switch_to.window(self.driver.window_handles[0])  # 切换到首页
    def parse_detail(self,soure):
        text=etree.HTML(soure)
        name=text.xpath('//span[@class="name"]/text()')[0]
        salsry=text.xpath('//dd[@class="job_request"]/p[1]/span[1]/text()')[0].strip()
        city = text.xpath('//dd[@class="job_request"]/p[1]/span[2]/text()')[0]
        city=re.sub(r'[\s/]','',city)
        work_years=text.xpath('//dd[@class="job_request"]/p[1]/span[3]/text()')[0]
        work_years=re.sub(r'[\s/]','',work_years)
        job_advantage=text.xpath('//dd[@class="job-advantage"]/p/text()')[0]
        desc=''.join(text.xpath('//dd[@class="job_bt"]//text()')).strip()
        print(name,salsry,city,work_years,job_advantage,desc)
        print("*"*10)
没有一蹴而就的成功,只有不断努力的拼搏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值