拉钩网前端项目实战05

拉钩网前端项目实战

拉钩网前端项目实战05

footer部分设计

一、footer部分设计

1.html部分

 <div class="footer">
            <div class="fooTop main">
                <div class="appBox fl">
                    <p class="btnApp"><span></span>下载拉钩APP</p>
                    <p class="btnApp"><span></span>微信小程序</p>
                    <p class="btnTxt">
                        <img src="img2/icon-wechat.png" alt="">拉钩微信
                        <img src="img2/icon-sina1.png" alt="">拉钩微博
                    </p>
                </div>
                <dl class="fl">
                    <dt>企业服务</dt>
                    <dd>招聘抢人宝典</dd>
                    <dd>公司搜索</dd>
                    <dd>拉钩APP </dd>
                </dl>
                <dl class="fl dlCen">
                    <dt>企业服务</dt>
                    <dd>招聘抢人宝典</dd>
                    <dd>公司搜索</dd>
                    <dd>拉钩APP </dd>
                </dl>
                <dl class="fl">
                    <dt>企业服务</dt>
                    <dd>招聘抢人宝典</dd>
                    <dd>公司搜索</dd>
                    <dd>拉钩APP </dd>
                </dl>
            </div>
            <div class="fooBottom">
                <div class="bottCon main">
                    <p class="txtP1 fl">&copy;2018 拉勾网 京ICP备12312343</p>
                    <p class="txtP2 fl"><span class="fl"></span>京公安网备 110108099987658776号</p>
                    <div class="txtBox fl">
                        <span class="fl"></span>
                        <p class="fl">
                            违法和不良信息举报<br>
                            电话:4007878<br>
                            邮箱:cc@lagou.com
                        </p>
                    </div>
                    <div class="fr imgBox"><img src="img/footer_lagou.png" alt="" /></div>
                </div>
            </div>
        </div>

2.css部分

.footer{
  border-top: 1px solid #ebebeb;
  margin-top: 70px;
  .fooTop{
    height: 236px;
    padding-top: 50px;
    .appBox{
      margin-right: 130px;
      width: 314px;
      height: 170px;
      border-right: 1px solid #e8e8e8;
      .btnApp{
        width: 180px;
        height: 44px;
        border: 1px solid #00b38a;
        line-height: 44px;
        margin-bottom: 17px;
        span{
          float: left;
          width: 15px;
          height: 15px;
          background: url('img/sprite2.png') no-repeat;
          margin-left: 38px;
          margin-top: 14px;
          margin-right: 8px;
        }
      }
      .btnApp:nth-child(1) {
        span{
          background-position: -148px -220px;
        }
      }
      .btnApp:nth-child(2) {
        span{
          background-position: -215px -54px;
        }
      }
      .btnTxt{
        img{
          display: inline-block;
          margin-right: 5px;
        }
        img:nth-child(2){
          display: inline-block;
          margin-left: 28px;
        }
      }
    }
    .dlCen{
      margin: 0 170px;
    }
    dl{
      dt{
        font-size: 18px;
        color: #555;
        margin-bottom: 26px;
      }
    }
    dl{
      dd{
        font-size: 12px;
        color: #555;
        height: 44px;
        line-height: 44px;
      }
    }
  }
  .fooBottom{
    height: 100px;
    background: #fafafa;
    .bottCon{
      height: 100px;
      font-size: 12px;
      color: #555;
      p{
        margin-top: 50px;
        margin-right: 20px;
      }
      span{
        background: url('img/sprite2.png') no-repeat;
      }
      .txtP2{
        span{
          width: 16px;
          height: 16px;
          background-position: -150px -184px;
        }
      }
      .txtBox{
        width: 186px;
        height: 58px;
        border: 1px solid #555;
        margin-top: 28px;
        span{
          width: 20px;
          height: 24px;
          background-position: -132px -20px;
          margin-top: 18px;
          margin-left: 20px;
        }
        p{
          margin-top: 8px;
          margin-left: 10px;
        }
      }
      .imgBox{
        margin-top: 50px;
      }
    }
  }
}

二、结果设计图

在这里插入图片描述

好的,下面是 scrapy 爬取拉钩的步骤: 1. 创建 scrapy 项目 在命令行中输入以下命令来创建 Scrapy 项目: ``` scrapy startproject lagou ``` 其中,`lagou` 是项目名称。 2. 创建爬虫 在项目的根目录下,使用以下命令创建一个爬虫: ``` scrapy genspider lagou_spider www.lagou.com ``` 其中,`lagou_spider` 是爬虫名称,`www.lagou.com` 是要爬取的站的域名。 3. 编写爬虫代码 打开 `lagou_spider.py` 文件,将其修改为以下内容: ```python import scrapy class LagouSpider(scrapy.Spider): name = "lagou" allowed_domains = ["www.lagou.com"] start_urls = ["https://www.lagou.com/"] def parse(self, response): pass ``` 我们定义了一个 `LagouSpider` 类,并指定了名称、域名和起始 URL。在 `parse` 方法中,我们暂时没有写任何代码,因为我们需要先分析站的页面结构和数据格式,才能编写爬虫代码。 4. 分析页面结构和数据格式 使用浏览器打开拉钩站,进入搜索职位界面,选择一个职位类型,例如 Python 开发,然后按下搜索按钮。此时,浏览器会跳转到一个新的页面,该页面的 URL 会包含搜索的关键词。例如,搜索 Python 开发,URL 为 `https://www.lagou.com/zhaopin/Python/`。 我们打开浏览器的开发者工具,切换到 Network 选项卡,然后点击搜索按钮。此时,我们会看到浏览器发送了多个请求,其中一个是 `https://www.lagou.com/jobs/positionAjax.json`,该请求返回了搜索结果的 JSON 数据。我们可以点击该请求,然后在 Preview 选项卡中查看数据格式。 我们可以看到,返回的 JSON 数据包含了多个职位的信息,每个职位包含了如下字段: - `companyFullName` 公司全名 - `companyShortName` 公司简称 - `companySize` 公司规模 - `district` 工作地点 - `education` 学历要求 - `financeStage` 融资阶段 - `firstType` 职位类别 - `industryField` 行业领域 - `positionAdvantage` 职位诱惑 - `positionId` 职位ID - `positionName` 职位名称 - `salary` 薪资范围 - `secondType` 职位子类别 - `workYear` 工作经验 现在,我们已经了解了数据的格式,可以开始编写爬虫代码了。 5. 完善爬虫代码 我们需要在 `parse` 方法中,向 `https://www.lagou.com/jobs/positionAjax.json` 发送请求,获取 JSON 数据,并解析数据,提取职位信息。 以下是完整的爬虫代码: ```python import scrapy import json class LagouSpider(scrapy.Spider): name = "lagou" allowed_domains = ["www.lagou.com"] start_urls = ["https://www.lagou.com/"] def parse(self, response): job_types = ["Python", "Java", "PHP", "C++", "C#", "Ruby", "Scala", "Go", "Swift"] for job_type in job_types: url = "https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false&isSchoolJob=0" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.2236.0 Safari/537.36 Edg/114.0.2236.0", "Referer": f"https://www.lagou.com/zhaopin/{job_type}/" } data = { "first": "false", "pn": "1", "kd": job_type } yield scrapy.Request(url=url, method="POST", headers=headers, body=json.dumps(data), callback=self.parse_job_list, meta={"job_type": job_type}) def parse_job_list(self, response): job_type = response.meta["job_type"] result = json.loads(response.text) for job in result["content"]["positionResult"]["result"]: yield { "job_type": job_type, "position_name": job["positionName"], "salary": job["salary"], "company_full_name": job["companyFullName"], "work_year": job["workYear"], "education": job["education"], "job_nature": job["jobNature"], "position_advantage": job["positionAdvantage"] } ``` 在 `parse` 方法中,我们通过循环遍历多个职位类型,向 `https://www.lagou.com/jobs/positionAjax.json` 发送 POST 请求,获取 JSON 数据。我们在请求头中设置了 User-Agent 和 Referer,以便绕过反爬虫机制。我们在请求体中设置了查询参数,其中 `kd` 表示搜索的职位类型。我们使用 `json.dumps` 方法将请求体转换为 JSON 格式,并将结果作为请求体发送。 在 `parse_job_list` 方法中,我们解析了返回的 JSON 数据,并提取了职位信息。我们使用 `yield` 关键字将每个职位信息生成为一个字典,然后交给 Scrapy 引擎处理。 6. 运行爬虫 在命令行中进入项目的根目录,然后输入以下命令,运行爬虫: ``` scrapy crawl lagou -o lagou.json ``` 其中,`-o lagou.json` 表示将爬取的数据保存到 `lagou.json` 文件中。您可以根据需要修改文件名和路径。 7. 结果分析 打开生成的 `lagou.json` 文件,您可以看到爬取到的数据。每个职位信息都包含了职位类型、职位名称、薪资范围、公司全名、工作经验、学历要求、职位性质和职位诱惑等字段。您可以根据需要对数据进行分析和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值