python 爬取猎聘网岗位信息+tkinter UI设计

  • 直接上效果图
    在这里插入图片描述

  • 要用到的库

  • import tkinter as tk
    import xlwt
    import requests
    import time
    from bs4 import BeautifulSoup

  • 爬虫部分

def spy(str):
    book = xlwt.Workbook(encoding='utf-8', style_compression=0)
    # 这是要爬取到excel中的信息
    row = ['名称', '地点', '薪资', '公司', '公司信息', '要求']
    sheet = book.add_sheet('猎聘网', cell_overwrite_ok=True)
    for i in range(len(row)):
        sheet.write(0, i, row[i])
    result = []
    # url可以自己一步一步的去试 str 指的是要爬取的关键字
    url1 = 'https://www.liepin.com/zhaopin/?ckId=tk7i1nm97w5bq0h2ydbid4bz89m8usn8&fkId=31cf30d5ce202786be7481f750ef36f0&skId=31cf30d5ce202786be7481f750ef36f0&sfrom=search_job_pc&scene=input&key=%s' % str
    # for循环爬取10页的内容
    for c in range(10):
        url = url1 + '&currentPage=%d&scene=page' % c
        headers = {
            "User-Agent": "这里放入自己浏览器的User-Agent即可"
        }
        response = requests.get(url=url, headers=headers)
        content = response.content.decode('utf-8')
        soup = BeautifulSoup(content, 'lxml')
        li = soup.find_all('div', class_='job-detail-box')
        for i in range(len(li)):
            try:
                title = li[i].find('div', class_='ellipsis-1').text
                address = li[i].find('span', class_='ellipsis-1').text
                salery = li[i].find('span', class_='job-salary').text
                company = li[i].find('span', class_='company-name ellipsis-1').text
                company_info = li[i].find('div', class_='company-tags-box ellipsis-1').text
                lable = li[i].find_all('span', class_='labels-tag')
                lable_1 = []
                for la in lable:
                    lable_1.append(la.text)
                result.append([title, address, salery, company, company_info, lable_1])
            except:
                pass
    # 这里是将爬取到的数据写入excel中
    for i in range(len(result)):
        for j in range(6):
            sheet.write(i + 1, j, result[i][j])
    path = str + '.xls'
    book.save(path)
  • tkinter部分
def e(event):
    begin = time.time()
    choice = inp.get()
    inp.delete(0, tk.END)
    spy(choice)
    inp.insert(tk.END, '爬取成功!!!')
    end = time.time()
    t = round(end - begin, 2)
    label2['text'] = "用时:" + str(t) + "S"

root= tk.Tk()
root.title('一览无遗')
root.iconbitmap('image/学院.ico')
root['bg'] = '#FFFAFA'
root.geometry('600x250')
root.resizable(0, 0)
inp = tk.Entry(root, font=("Times",20,"bold"))
inp.insert(tk.END, '请输入岗位名称')
inp.place(x=70, y=80, width=400, height=50)
btn = tk.Button(root, text='开始获取', font=("Times", 15, "bold"), bd=5, overrelief=tk.RIDGE)
btn.bind("<Button-1>", e)
btn.place(x=480, y=80, width=100, height=50)
label1 = tk.Label(root, text='这里左下角可以设置一个标签,显示机构名', font=("Times",15,"bold"))
label1['bg'] = '#FFFAFA'
label1.place(x=0, y=200, width=300, height=50)
label2 = tk.Label(root, font=("Times", 15, "bold"), text='用时:0S')
label2['bg'] = '#FFFAFA'
label2.place(x=450, y=180, width=200, height=100)
root.mainloop()
  • 完整代码:
import tkinter as tk
import xlwt
import requests
import time
from bs4 import BeautifulSoup
def spy(str):
    book = xlwt.Workbook(encoding='utf-8', style_compression=0)
    row = ['名称', '地点', '薪资', '公司', '公司信息', '要求']
    sheet = book.add_sheet('猎聘网', cell_overwrite_ok=True)
    for i in range(len(row)):
        sheet.write(0, i, row[i])
    result = []
    url1 = 'https://www.liepin.com/zhaopin/?ckId=tk7i1nm97w5bq0h2ydbid4bz89m8usn8&fkId=31cf30d5ce202786be7481f750ef36f0&skId=31cf30d5ce202786be7481f750ef36f0&sfrom=search_job_pc&scene=input&key=%s' % str
    for c in range(10):
        url = url1 + '&currentPage=%d&scene=page' % c
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0"
        }
        response = requests.get(url=url, headers=headers)
        content = response.content.decode('utf-8')
        soup = BeautifulSoup(content, 'lxml')
        li = soup.find_all('div', class_='job-detail-box')
        for i in range(len(li)):
            try:
                title = li[i].find('div', class_='ellipsis-1').text
                address = li[i].find('span', class_='ellipsis-1').text
                salery = li[i].find('span', class_='job-salary').text
                company = li[i].find('span', class_='company-name ellipsis-1').text
                company_info = li[i].find('div', class_='company-tags-box ellipsis-1').text
                lable = li[i].find_all('span', class_='labels-tag')
                lable_1 = []
                for la in lable:
                    lable_1.append(la.text)
                result.append([title, address, salery, company, company_info, lable_1])
            except:
                pass
    for i in range(len(result)):
        for j in range(6):
            sheet.write(i + 1, j, result[i][j])
    path = str + '.xls'
    book.save(path)

def e(event):
    begin = time.time()
    choice = inp.get()
    inp.delete(0, tk.END)
    spy(choice)
    inp.insert(tk.END, '爬取成功!!!')
    end = time.time()
    t = round(end - begin, 2)
    label2['text'] = "用时:" + str(t) + "S"

root= tk.Tk()
root.title('一览无遗')
root.iconbitmap('image/学院.ico')
root['bg'] = '#FFFAFA'
root.geometry('600x250')
root.resizable(0, 0)
inp = tk.Entry(root, font=("Times",20,"bold"))
inp.insert(tk.END, '请输入岗位名称')
inp.place(x=70, y=80, width=400, height=50)
btn = tk.Button(root, text='开始获取', font=("Times", 15, "bold"), bd=5, overrelief=tk.RIDGE)
btn.bind("<Button-1>", e)
btn.place(x=480, y=80, width=100, height=50)
label1 = tk.Label(root, text='这里左下角可以设置一个标签,显示机构名', font=("Times",15,"bold"))
label1['bg'] = '#FFFAFA'
label1.place(x=0, y=200, width=300, height=50)
label2 = tk.Label(root, font=("Times", 15, "bold"), text='用时:0S')
label2['bg'] = '#FFFAFA'
label2.place(x=450, y=180, width=200, height=100)
root.mainloop()
  • 如果遇见了什么问题可以留言问我。
  • 希望能帮到大家!
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值