前期我们已经爬取了各大公司岗位的相关信息,并且爬取了牛客网的面试经验贴。之后我们将面试经验喂给大模型进行了面试经验总结,得到了良好的面试经验,以供用户参考。
为了提高我们系统的效率,降低系统反应时长,我们计划将大模型总结好的经验存储到数据库中,并把一些固定的比如公司岗位信息存储到数据库中,这样,就变成了查询数据库操作,会大大缩短反应时长。
并且经会议讨论,我们认真观察了爬取数据的结构内容,发现大部分经验贴中都涉及到了八股信息。于是我们打算爬取八股信息作为模拟面试模块的参考,以提高大模型性能。
接下来我进行了如下操作:
创建数据库表
公司岗位信息表
-
设置如下字段:
-
使用python的mysql板块连接mysql,并将csv中的数据存储到数据库中
代码:
def mysql_connect():
'''建立连接'''
# 打开数据库连接
db = pymysql.connect(host="localhost",port=3306,
user="root",password="123456",db="xmsx",charset="utf8")
#使用cursor创建一个游标对象
cursor = db.cursor()
# 重置自增值序列到0
#cursor.execute("ALTER TABLE house_info AUTO_INCREMENT = 0")
return db,cursor
def mysql_close(db,cursor):
'''关闭连接'''
db.commit()
cursor.close()
db.close()
def query(sql,*args):
'''执行sql'''
db,cursor = mysql_connect()
try:
cursor.execute(sql,args)
result = cursor.fetchall()
return result
except Exception as e:
db.rollback()
print(e)
finally:
mysql_close(db,cursor)
def load_data():
data = pd.read_csv(r'path.csv')
#查看行和列
print(data.columns)
print(data.dtypes)
db, cursor = mysql_connect() # 建立连接
for index,row in data.iterrows():
# print(index)
# print(row)
company = row['company']
job_area = row['job_area']
job_name = row['job_name']
job_require = row['job_require']
job_duty_desciption = row['job_description']
sql = ('insert into companyandjob(company,'
'job_area,job_name,job_require,job_duty_desciption)'
' values(%s,%s,%s,%s,%s)')
query(db,cursor,sql,company,job_area,job_name,job_require,job_duty_desciption)
mysql_close(db, cursor) # 关闭连接
导入成功如图:
面试经验表
首先从牛客网以及其他网站爬取一些优质面经,然后我们保存到数据库中,以便进行数据可视化页面的前端展示。
爬虫得到的csv文件:
-
新建面试经验表,字段如下
在建表中,发现设置为varchar存储字符不够,于是设计类型为longtext
-
导入数据,得到结果
八股表
从各个网站中爬取了各类别的八股信息,爬取过程和爬取公司官网类似,主要的工作量在于需要分析不同网站的结构,找到要提取数据的部分,精准定位进行提取。因此这里颇耗费了点时间。
因为网站中是按照面试题目类别进行展示的,所以我们也按照类别进行爬取
然后导入到了数据库中,爬虫得到的csv文件如下,(经过了清洗,只爬取了面试题目部分)
导入到数据库中(和之前相同的逻辑)
至此,数据库搭建完成。