Python网络爬虫之:selenium + chromedriver 爬取拉勾网 python 所有有关职位

需求分析

本项目旨在完成以下步骤:

  • 爬取拉勾网所有的 python (或者其他职位)信息并按照一定格式写入文件
  • 将所有的信息进行数据的清洗、筛选
  • 对不同省的python职位的薪资进行平均值求算
  • 将不同省份的python薪资标准通过 pyecharts 进行可视化

所以在本文的项目中,只是通过爬虫操作将我们需要的职位信息写入了文件,下一篇文章中,我将通过清理和筛选数据,对不同省的职位的薪资进行平均值的求算。

代码

import time
from selenium import webdriver
from lxml import etree


def build_chromedriver():
    driver = webdriver.Chrome(executable_path=r'C:\Users\dell\Anaconda3\Scripts\chromedriver.exe')
    return driver


def request_page(driver,url):
    driver.get(url)
    text = driver.page_source
    return text


def search_position_info(driver):
    info = 'python'
    input_div = driver.find_element_by_xpath('//input[@id="search_input"]')
    input_div.send_keys('%s'%info)
    # 点击搜索按键
    driver.find_element_by_xpath('//input[@id="search_button"]').click()
    # 因为这里并没有产生新的页面,所以不用改变 driver 指向的页面

    # 点击广告页面
    driver.find_element_by_xpath('/html/body/div[9]/div/div[2]').click()
    return driver


def attain_whole_page_infos(driver,html,page_number):
    #先点击页面
    driver.find_element_by_xpath('//span[@page="%s"]'%page_number).click()
    # 获取这一页所有职位的信息
    text = driver.page_source
    html = etree.HTML(text)
    position_info_lst = html.xpath('//h3/text()')
    position_locaiton_lst = html.xpath('//span[@class="add"]//em/text()')
    money_lst = html.xpath('//span[@class="money"]/text()')

    with open('position.txt', 'a') as f:
        for i in zip(position_info_lst,position_locaiton_lst,money_lst):
            f.write(str(i)+'\n')

    time.sleep(1)



if __name__ == '__main__':

    url = 'https://www.lagou.com/'
    driver = build_chromedriver()
    text = request_page(driver,url)
    driver.find_element_by_xpath('//a[@class="tab focus"]').click()  #自动点击全国的位置标签
    driver = search_position_info(driver)   # 输入查找的职位并返回页面
    page_source = driver.page_source
    html = etree.HTML(page_source)
    number_lst = html.xpath('//span[@page]/text()')     # 再新打开的页面上获取所有页数的信息
    number_int_lst = [int(number) for number in number_lst] 
    max_page = max(number_int_lst)  # 得到页数的最大值,遍历这么多次
    for i in range(1,max_page+1):
    # for i in range(1,15):
        attain_whole_page_infos(driver,html,i)      # 在每一页上都进行信息的抽取操作,并且写入文件中




结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值