selenium爬取招聘数据并存入MySQL

该代码示例展示了如何利用Python的Selenium库抓取网页上的职位数据,如职位名称、地区、薪资等,并通过MySQL进行存储。程序首先创建数据库表,然后遍历网页上的职位卡片,提取相关信息并存入数据库。
摘要由CSDN通过智能技术生成

一、表的结构

 

idint
 title           varchar(255) 
area            varchar(255) 
salary           varchar(255) 
edu_list        varchar(255) 
company_name     varchar(255) 
company_tag_list varchar(255) 
info_descvarchar(255) 
hrefvarchar(255) 

二、代码

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
import pymysql
from urllib import parse


KeyWord = input("请输入你要搜索的岗位关键字:")
KeyWords = parse.quote(parse.quote(KeyWord))


def con():
    db = pymysql.connect(
        port=3306,
        user='root',
        password='输入密码',
        db='输入数据库名',
        charset='utf8'
    )
    sql = 'CREATE TABLE {}(`id` int(11) NOT NULL AUTO_INCREMENT,`title` VARCHAR(255) DEFAULT NULL,`area` VARCHAR(' \
          '255) DEFAULT NULL,`salary` VARCHAR(255) DEFAULT NULL,`edu_list` VARCHAR(255) DEFAULT NULL,' \
          '`company_name` VARCHAR(255) DEFAULT NULL,`company_tag_list` VARCHAR(255) DEFAULT NULL,`info_desc` VARCHAR(' \
          '255) DEFAULT NULL,' \
          '`href` VARCHAR(500) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;'.format(KeyWord)
    cursor = db.cursor()
    cursor.execute(sql)
    cursor.close()
    db.close()


class save:
    con()
    db = pymysql.connect(
        port=3306,
        user='root',
        password='输入密码',
        db='输入数据库名',
        charset='utf8'
    )
    cursor = db.cursor()
    try:
        sql_1 = """insert into {}(title,area,salary,edu_list,company_name,company_tag_list,info_desc,
        href) values(%s, %s, %s, %s, %s, %s,%s,%s)""".format(KeyWord)
    except:
        print("数据有问题")


def get_job_info():
    lit = driver.find_elements(by=By.CSS_SELECTOR, value='.job-card-wrapper')
    # print(lit)
    for li in lit:
        title = li.find_element(by=By.CSS_SELECTOR, value='.job-name ').text
        area = li.find_element(by=By.CSS_SELECTOR, value='.job-area').text
        salary = li.find_element(by=By.CSS_SELECTOR, value='.salary').text
        edu_list = li.find_element(by=By.CSS_SELECTOR, value='.tag-list').text
        company_name = li.find_element(by=By.CSS_SELECTOR, value='.company-name').text
        company_tag_list = li.find_element(by=By.CSS_SELECTOR, value='.company-tag-list').text
        info_desc = li.find_element(by=By.CSS_SELECTOR, value='.info-desc').text
        href = li.find_element(by=By.CSS_SELECTOR, value='.job-card-left').get_attribute('href')
        dit = {
            '标题': title,
            '地区': area,
            '薪资': salary,
            '经验': edu_list,
            '公司名称': company_name,
            '公司领域': company_tag_list,
            '福利': info_desc,
            '详情页': href,
        }
        title = dit.get('标题')
        area = dit.get('地区')
        salary = dit.get('薪资')
        edu_list = dit.get('经验')
        company_name = dit.get('公司名称')
        company_tag_list = dit.get('公司领域')
        info_desc = dit.get('福利')
        href = dit.get('详情页')
        # print(title)
        save.cursor.execute(save.sql_1,
                            (title, area, salary, edu_list, company_name, company_tag_list, info_desc, href))
        save.db.commit()

        # print(dit)


if __name__ == '__main__':
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    for page in range(1, 11):
        try:
            print(f'正在获取{page}页的数据')
            driver.get('xxxxxxxxxxxxxxxxxxxxxx')#网页
            time.sleep(1)
            get_job_info()
            next_page = driver.find_element(by=By.CSS_SELECTOR,
                                            value='.options-pages a:nth-child(10)')
            if next_page:
                next_page.click()
            else:
                print("没数据")
        except:
            pass
    driver.quit()

三、展示 

82833c2ef15c4567ba445954204ec38c.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

清风--明月

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

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

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

打赏作者

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

抵扣说明:

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

余额充值