爬取拉勾网

简单快速爬取拉勾网,我们需要在爬取json文件,需要发送POST请求,但是需要先发送一次GET请求,不然会返回错误信息,

爬取间隔尽量设置长一点,有多个ip随意。。。


# -*- coding: utf-8 -*-

import scrapy
import time
import re
import json
from wde32.items import Wde32Item




# 必须先发一次GET请求,在发一次POST才可以
class LagouwangSpider(scrapy.Spider):
    name = "lagouwang2"
    allowed_domains = ["lagou.com"]
    # json 的地址
    start_urls = ["https://www.lagou.com/jobs/list_python%E7%88%AC%E8%99%AB?labelWords=sug&fromSearch=true&suginput=python"]




    def parse(self,response):
        num = 1
        for i in range(30):
            num += 1
            time.sleep(5)
            scrapy.Request(
                callback=None,
                method='GET',


                url="https://www.lagou.com/jobs/list_python%E7%88%AC%E8%99%AB?px=default&city=%E5%85%A8%E5%9B%BD#filterBox")
                # url="https://www.lagou.com/jobs/list_python%E7%88%AC%E8%99%AB?labelWords=sug&fromSearch=true&suginput=python")
            time.sleep(5)
            yield scrapy.FormRequest(


                url="https://www.lagou.com/jobs/positionAjax.json?px=default&needAddtionalResult=false&isSchoolJob=0",
                formdata={
                    'first':'true',
                    'pn':str(num),
                    'kd':'爬虫'},
                    callback=self.parse_page)




    def parse_page(self, response):
        iters = Wde32Item()
        try:
            datas = json.loads(response.body.decode("utf-8"))["content"]["positionResult"]["result"]
            for data in datas:
                iters["add_url"] = "https://www.lagou.com/jobs/"+str(data["positionId"])+".html"
                iters["name"] = data['companyFullName']
                iters["createTime"] = data["createTime"]
                iters["secondType"] = data["secondType"]
                iters["positionName"] = data["positionName"]
                iters["education"] = data["education"]
                iters["workYear"] = data["workYear"]
                iters["city"] = data["city"]
                iters["salary"] = data["salary"]
                iters['companyShortName'] = data["companyShortName"]
                iters["companySize"] = data["companySize"]


                yield iters
        except:
            print('爬取结束')
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值