python爬取招聘网站数据

这段代码是使用Selenium自动化测试模块进行网页爬取的示例代码。它通过模拟人的行为在浏览器中操作网页来实现爬取。具体的流程如下:

  1. 导入所需的模块,包括Selenium、时间、随机、csv等模块。
  2. 打开浏览器,创建一个Chrome浏览器实例。
  3. 设置要爬取的页数范围。
  4. 循环遍历每一页的URL。
  5. 访问每一页的URL,获取网页数据。
  6. 创建一个CSV文件,设置字段名。
  7. 获取每个职位的详情页URL。
  8. 遍历每个详情页URL,发送请求获取响应数据。
  9. 使用css选择器解析响应数据,提取所需的数据内容。
  10. 将提取到的数据写入CSV文件。
  11. 打印出职位的相关信息。

        该代码的主要功能是爬取招聘网上的职位信息,包括职位名、薪资、城市、经验、学历、福利、岗位标签、公司名、详情页等信息。使用了Selenium模拟人的行为,通过使用开发者工具获取到的CSS选择器来定位和提取数据。

 

# 导入自动化测试模块
from selenium import webdriver
# 导入时间模块
import time
# 导入随机模块
import random
# 导入csv模块  内置模块 不需要安装
import csv
import requests
import parsel
"""
selenium: 模拟人的行为去操作浏览器
"""
# 1. 打开浏览器
driver = webdriver.Chrome()

# 设置页数范围
start_page = 0
end_page = 10  # 假设要爬取前5页的数据
for page in range(start_page, end_page):
    # 2. 访问网站
    url = f'https://www.liepin.com/zhaopin/?city=070020&dq=070020&pubTime=&currentPage={page}&pageSize=40&key=%E8%B4%A2%E5%8A%A1bp&suggestTag=&workYearCode=0&compId=&compName=&compTag=&industry=&salary=&jobKind=&compScale=&compKind=&compStage=&eduLevel=&otherCity=&sfrom=search_job_pc&ckId=vda04kszzsgxhhl7nc4fc21r5hthguv9&scene=condition&skId=vda04kszzsgxhhl7nc4fc21r5hthguv9&fkId=vda04kszzsgxhhl7nc4fc21r5hthguv9&suggestId='
    driver.get(url)
    # 隐式等待 ---> 让网页数据加载完成
    driver.implicitly_wait(10)
    time.sleep(3)

    # 创建文件
    f = open('data.csv', mode='a', encoding='utf-8', newline='')
    csv_writer = csv.DictWriter(f, fieldnames=[
        '职位名',
        '薪资',
        '城市',
        '经验',
        '学历',
        '福利',
        '岗位标签',
        '公司名',
        '详情页',
    ])
    # 写入表头
    csv_writer.writeheader()

    # 3. 获取岗位详情页url地址
    url_list = driver.find_elements('css selector', '.job-detail-box a')

    for index in url_list:
        url = index.get_attribute('href')
        print(url)
        time.sleep(random.randint(1, 2))
        """
        1. 发送请求, 模拟浏览器对 url地址 发送请求
            - 把python代码伪装成浏览器发送请求
                目的: 为了防止被反爬
        """
        # 请求url地址
        # url = 'https://www.liepin.com/job/1948917627.shtml?d_sfrom=search_prime&d_ckId=null&d_curPage=2&d_pageSize=40&d_headId=null&d_posi=1&skId=s5h3mfxh8n1c3ec3dr7nnc6d4lycb9db&fkId=s5h3mfxh8n1c3ec3dr7nnc6d4lycb9db&ckId=s5h3mfxh8n1c3ec3dr7nnc6d4lycb9db&sfrom=search_job_pc&curPage=2&pageSize=40&index=1'
        # 模拟伪装  ---> 开发者工具里面进行复制粘贴
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
        }
        # 发送请求 ->  <Response [200]> 表示请求成功
        response = requests.get(url=url, headers=headers)
        """
        2. 获取数据, 获取服务器返回响应数据
            开发者工具: response
            response.text 获取响应文本数据, 返回字符串数据类型 html字符串数据内容
        3. 解析数据, 提取我们想要的数据内容
    
            css选择器 根据标签属性提取数据内容:
        """
        # 把获取下来 html字符串数据内容 <response.text> 转成可解析对象
        selector = parsel.Selector(response.text)
        """
        .job-apply-content .name-box .name 定位标签
            - get() 获取第一个标签 就获取一个内容 返回字符串
            - getall 获取所有标签内容, 返回列表
    
        css选择器, 在系统课程 都是从头到尾讲2.5个小时才能讲完知识点内容
    
        a::text 表示 提取a标签里面文本呀
        """
        title = selector.css('.job-apply-content .name-box .name::text').get()  # 职位名
        salary = selector.css('.job-apply-content .name-box .salary::text').get()  # 薪资
        city = selector.css('.job-apply-content .job-properties span:nth-child(1)::text').get()  # 城市
        exp = selector.css('.job-apply-content .job-properties span:nth-child(3)::text').get()  # 经验
        edu = selector.css('.job-apply-content .job-properties span:nth-child(5)::text').get()  # 学历
        # 把列表合并成字符串
        labels = ','.join(selector.css('.job-apply-container-desc .labels span::text').getall())  # 福利
        job_labels = ','.join(selector.css('.tag-box ul li::text').getall())  # 职位标签
        company = selector.css('.company-info-container .company-card .content .name::text').get()  # 公司名
        job_info = '\n'.join(selector.css('.job-intro-container .paragraph dd::text').getall())  # 岗位职业
        """
        4. 保存数据, 把数据保存本地文件
            - 基本数据 保存csv表格里面
            - 岗位职责 保存文本里面
    
        """
        # 把数据写入到字典里面
        dit = {
            '职位名': title,
            '薪资': salary,
            '城市': city,
            '经验': exp,
            '学历': edu,
            '福利': labels,
            '岗位标签': job_labels,
            '公司名': company,
            '详情页': url,
        }
        # 写入数据
        csv_writer.writerow(dit)
        print(title, salary, city, exp, edu, labels, job_labels, company, job_info)

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫是一种通过编写程序来获取互联网上的数据的技术。对于爬取招聘网站数据,可以使用Python中的一些第三方库如Scrapy或BeautifulSoup来实现。 首先,我们需要分析招聘网站的HTML结构,找到我们需要爬取数据所在的元素位置。然后,编写Python代码,使用相应的库来提取所需的数据。这些数据可以包括职位名称、公司名称、薪资水平等。 接下来,我们可以使用Tableau来进行数据可视化和交互。Tableau是一款功能强大的商业智能工具,可以帮助我们将数据变成易于理解和分析的可视化图表。可以通过将爬取到的数据导入Tableau,然后使用Tableau的图表、地图、仪表盘等功能来展示数据。 通过Tableau的交互大屏功能,我们可以实现对数据的实时展示和交互。例如,我们可以设置数据刷新时间,使得大屏能够显示最新的招聘信息。我们还可以添加筛选器和参数控制,使用户能够自由地根据需求进行数据过滤和分析。 最后,将Python爬取数据和Tableau可视化交互大屏的源码整合起来,就可以实现将招聘网站数据爬取并用Tableau进行可视化展示的功能。这个源码可以分为两部分,一部分是爬虫代码,负责数据爬取和处理;另一部分是Tableau代码,负责将数据导入Tableau并进行可视化展示。 综上所述,通过Python爬虫获取招聘网站数据,并使用Tableau进行可视化交互大屏展示,是一种非常有效的数据分析方法。这样可以将庞大的数据转化为直观、易懂的图表,方便用户进行数据的理解和决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值