-
直接上效果图
-
要用到的库
-
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 + '¤tPage=%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 + '¤tPage=%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()
- 如果遇见了什么问题可以留言问我。
- 希望能帮到大家!