统计
  • 文章总数:896 篇
  • 评论总数:1454 条
  • 分类总数:2 个
  • 最后更新:一天前

分享一个Python爬虫爬取招聘信息的完整写法!

本文阅读 2 分钟
首页 技术知识 正文

很多小伙伴儿跟十六一样特别喜欢研究爬虫,今天也是跟大家一起来学习写爬虫的一天:代码仅供学习!
2023-11-11T05:19:16.png

爬虫任务:

1.抓取 **人才网 job招聘信息
2.保存到数据库job.db
思路:爬取一个网站->循环爬取->保存(第二次运行可把数据库创建函数注解掉)

# -*- codeing = utf-8 -*-
# @Time : 2023/11/11 0027 10:03
# @File : pazhua.py
# @Function :抓取 **人才网 job招聘信息

from bs4 import BeautifulSoup # 网页解析,获取数据
import re # 正则表达式,进行文字匹配
import urllib.request,urllib.error # 定义url,获取网页数据
import xlwt
import sqlite3

def main():
    url = 'https://hhpi.cn/'#这里是招聘网站的网址
    datalist = paqu(url)
    dbpath = 'job.db'  #保存路径
    init_db(dbpath)
    savedb(datalist,dbpath)


titlefind = re.compile(r'<h4 class="job_name"><a.*>(.*)</a>') # 招聘的标题 职位
timefind = re.compile(r'<span class="view-pos-date">(.*)</span>') # 招聘发布的时间
moneyfind = re.compile(r'<span style="font-weight:bold;color:#5B6A84">(.*)</span><span>') # 招聘薪资
dptionfind = re.compile(r'<div.*class="job_desc light_width".*>((?:.|\n)*?)</div>') # 简介 匹配带有空格/换行的所有字符 正则表达式((?:.|\n)*?)
gongsifind = re.compile(r'<div class="job_info light_width"> <a.*>(.*?)</a>')
#爬取网页
def paqu(url):
    datalist = []
    for i in range(0,24):  #左闭右开
        xunhuan_url = url + str(1+i)
        #print(xunhuan_url)
        html = paqu_one(xunhuan_url)

        #解析数据 处理数据
        soup = BeautifulSoup(html,"html.parser")
        for biaoqian in soup.find_all('div',class_="item_box"):
            data = []
            biaoqian = str(biaoqian)

            title = re.findall(titlefind,biaoqian)
            for i in title:
                title = i
            data.append(i)

            time = re.findall(timefind,biaoqian)
            for i in time:
                time = i
            data.append(time)

            money = re.findall(moneyfind,biaoqian)
            for i in money:
                money = i
            data.append(money)

            gongsi = re.findall(gongsifind,biaoqian)
            for i in gongsi:
                gongsi = i
            data.append(gongsi)

            jieshao = re.findall(dptionfind,biaoqian)
            for i in jieshao:
                jieshao = i
            data.append(jieshao)

            datalist.append(data)


    #print(datalist)
    return datalist


# 爬抓1个网页数据
def paqu_one(url):
    header = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
    }

    request = urllib.request.Request(url=url,headers=header)
    html = ""
    try:
        response = urllib.request.urlopen(request)
        html = response.read().decode("gbk")
    except urllib.error.URLError as e:
        if hasattr(e, "code"):
            print(e.code)
        if hasattr(e, "reason"):
            print(e.reason)

    return html


#写入数据库
def savedb(datalist,dbpath):
    con = sqlite3.connect(dbpath)
    cur = con.cursor()

    for i in range(len(datalist)):  #循环datalist的条数
        data = datalist[i]
        for index in range(len(data)):
            data[index] = '"' + str(data[index]) + '"' # 这里增加了将data转为字符串才能拼接
        sql = '''
                insert into job(
                title,time,money,gongsi,miaoshu
                )values (%s)
            ''' % ",".join(data)
        #print(sql)

        cur.execute(sql)  # 执行sql
        con.commit()  # 提交到数据库
        print("写入数据库第%d"%i)

    cur.close()
    con.close() #关闭数据库


#新建数据库
def init_db(dbpath):
    conn = sqlite3.connect(dbpath)
    sql =  '''
        create table job
        (id integer primary key autoincrement ,
        title varchar ,
        time varchar ,
        money varchar ,
        gongsi varchar ,
        miaoshu varchar); 
    '''
    cursor = conn.cursor() #获取游标
    cursor.execute(sql)
    conn.commit()
    conn.close()

if __name__ == "__main__":
    main()

这里每个步骤都是十六封装好的函数:
paqu_one(url):是爬抓一个网页
-url就是爬取的网址
paqu(url):是当前执行爬取网页的主函数
savedb(datalist,dbpath)"是创建数据库
-datalist:是爬取的信息
-dbpath是:保存的数据库路径
init_db(dbpath)这个是创建数据库
-dbpath 路径
最后,代码仅供学习参考,里面的信息截取规则和正则表达式是按照对应网站来写的,如果是别的网站是需要进行修改成对应的!

免责声明
本站提供的一切内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
完整优化版H5聊天系统即时通讯_IM聊天APP_聊天_交友_客服_微信 带安卓_苹果端APP网站源码
« 上一篇 11-10
浅谈下Chatgpt和claude2哪个好用?当下哪种AI更加适合写作?
下一篇 » 11-12

发表评论

发表评论

作者信息

动态快讯

    请配置好页面缩略名选项

热门文章

标签TAG

没有任何标签

热评文章