精华内容
下载资源
问答
  • 拉勾招聘网
    2020-11-29 13:50:00

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

    """

    Created on Mon Sep 7 21:44:39 2020

    @author: ASUS

    """

    外汇常见问题https://www.kaifx.cn/lists/question/

    import requests

    import time

    import json

    import xlwt

    workbook = xlwt.Workbook(encoding=' utf-8')

    mysheet = workbook.add_sheet('mysheet')

    mysheet.write(0, 0, 'positionId')

    mysheet.write(0, 1, 'positionName')

    mysheet.write(0, 2, 'companyId')

    mysheet.write(0, 3, 'companyFullName')

    mysheet.write(0, 4, 'city')

    mysheet.write(0, 5, 'companyLabelList')

    mysheet.write(0, 6, 'companyLogo')

    mysheet.write(0, 7, 'companyShortName')

    mysheet.write(0, 8, 'companySize')

    mysheet.write(0, 9, 'createTime')

    mysheet.write(0, 10, 'district')

    mysheet.write(0, 11, 'education')

    mysheet.write(0, 12, 'financeStage')

    mysheet.write(0, 13, 'firstType')

    mysheet.write(0, 14, 'formatCreateTime')

    mysheet.write(0, 15, 'industryField')

    mysheet.write(0, 16, 'jobNature')

    mysheet.write(0, 17, 'lastLogin')

    mysheet.write(0, 18, 'latitude')

    mysheet.write(0, 19, 'linestaion')

    mysheet.write(0, 20, 'longitude')

    mysheet.write(0, 21, 'matchScore')

    mysheet.write(0, 22, 'positionAdvantage')

    mysheet.write(0, 23, 'positionId')

    mysheet.write(0, 24, 'positionLables')

    mysheet.write(0, 25, 'positionName')

    mysheet.write(0, 26, 'secondType')

    mysheet.write(0, 27, 'skillLables')

    mysheet.write(0, 28, 'stationname')

    mysheet.write(0, 29, 'subwayline')

    mysheet.write(0, 30, 'thirdType')

    mysheet.write(0, 31, 'workYear')

    def main(kd,pages,row):

    # 通过访问主网页获取cookies和session

    url1 = 'https://www.lagou.com/jobs/list_python?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput='

    # 提交ajax请求,获取json数据

    url = "https://www.lagou.com/jobs/positionAjax.json?px=default&needAddtionalResult=false"

    # 请求头

    headers = {

    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',

    'Referer': 'https://www.lagou.com/jobs/list_python?px=default&city=%E5%85%A8%E5%9B%BD',

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',

    'Host': 'www.lagou.com'

    }

    # 使用data来决定获取多少页的json数据

    for page in range(1, pages):

    data = {

    'first': 'false',

    'pn': page,

    'kd': 'python'

    }

    data['kd']=kd

    s = requests.Session() # 建立session

    s.get(url=url1, headers=headers, timeout=1)

    cookie = s.cookies # 获取cookie

    respon = s.post(url=url, headers=headers, data=data, cookies=cookie, timeout=3)

    time.sleep(1)

    #print(respon.text)

    result = json.loads(respon.text)

    info = result["content"]["positionResult"]["result"]

    print(len(info))

    for j in info:

    mysheet.write(row, 0, j['positionId'])

    mysheet.write(row, 1, j['positionName'])

    mysheet.write(row, 2, j['companyId'])

    mysheet.write(row, 3, j['companyFullName'])

    mysheet.write(row, 4, j['city'])

    mysheet.write(row, 5, j['companyLabelList'])

    mysheet.write(row, 6, j['companyLogo'])

    mysheet.write(row, 7, j['companyShortName'])

    mysheet.write(row, 8, j['companySize'])

    mysheet.write(row, 9, j['createTime'])

    mysheet.write(row, 10, j['district'])

    mysheet.write(row, 11, j['education'])

    mysheet.write(row, 12, j['financeStage'])

    mysheet.write(row, 13, j['firstType'])

    mysheet.write(row, 14, j['formatCreateTime'])

    mysheet.write(row, 15, j['industryField'])

    mysheet.write(row, 16, j['jobNature'])

    mysheet.write(row, 17, j['lastLogin'])

    mysheet.write(row, 18, j['latitude'])

    mysheet.write(row, 19, j['linestaion'])

    mysheet.write(row, 20, j['longitude'])

    mysheet.write(row, 21, j['matchScore'])

    mysheet.write(row, 22, j['positionAdvantage'])

    mysheet.write(row, 23, j['positionId'])

    mysheet.write(row, 24, j['positionLables'])

    mysheet.write(row, 25, j['positionName'])

    mysheet.write(row, 26, j['secondType'])

    mysheet.write(row, 27, j['skillLables'])

    mysheet.write(row, 28, j['stationname'])

    mysheet.write(row, 29, j['subwayline'])

    mysheet.write(row, 30, j['thirdType'])

    mysheet.write(row, 31, j['workYear'])

    row=row+1

    workbook.save('py3.xls')

    # 获取前两页的职位json信息

    kd=input('输入关键字:')

    pages=int(input('输入要爬取多少页:'))

    main(kd,pages,1)

    # 结果如下:

    # {"resubmitToken":null,"requestId":null,"msg":null,"success":true,"content":{"hrInfoMap":{"6187967":{"userId":11765418,"phone":null,"positionName":"招聘经理",........."pageSize":15},"code":0}

    更多相关内容
  • 网络爬虫爬取拉勾招聘网

    千次阅读 2020-09-07 22:28:02
    网络爬虫爬取拉勾招聘网 搭配好环境 复制以下代码 # -*- coding: utf-8 -*- """ Created on Mon Sep 7 21:44:39 2020 @author: ASUS """ import requests import time import json import xlwt workbook = ...

    网络爬虫爬取拉勾招聘网

    • 搭配好环境
    • 复制以下代码
    # -*- coding: utf-8 -*-
    """
    Created on Mon Sep  7 21:44:39 2020
    
    @author: ASUS
    """
    
    
    import requests
    import time
    import json
    import xlwt
    
    workbook = xlwt.Workbook(encoding=' utf-8')
    mysheet = workbook.add_sheet('mysheet')
    
    mysheet.write(0, 0, 'positionId')
    mysheet.write(0, 1, 'positionName')
    mysheet.write(0, 2, 'companyId')
    mysheet.write(0, 3, 'companyFullName')
    mysheet.write(0, 4, 'city')
    mysheet.write(0, 5, 'companyLabelList')
    mysheet.write(0, 6, 'companyLogo')
    mysheet.write(0, 7, 'companyShortName')
    mysheet.write(0, 8, 'companySize')
    mysheet.write(0, 9, 'createTime')
    mysheet.write(0, 10, 'district')
    mysheet.write(0, 11, 'education')
    mysheet.write(0, 12, 'financeStage')
    mysheet.write(0, 13, 'firstType')
    mysheet.write(0, 14, 'formatCreateTime')
    mysheet.write(0, 15, 'industryField')
    mysheet.write(0, 16, 'jobNature')
    mysheet.write(0, 17, 'lastLogin')
    mysheet.write(0, 18, 'latitude')
    mysheet.write(0, 19, 'linestaion')
    mysheet.write(0, 20, 'longitude')
    mysheet.write(0, 21, 'matchScore')
    
    
    mysheet.write(0, 22, 'positionAdvantage')
    mysheet.write(0, 23, 'positionId')
    mysheet.write(0, 24, 'positionLables')
    mysheet.write(0, 25, 'positionName')
    mysheet.write(0, 26, 'secondType')
    mysheet.write(0, 27, 'skillLables')
    mysheet.write(0, 28, 'stationname')
    mysheet.write(0, 29, 'subwayline')
    mysheet.write(0, 30, 'thirdType')
    mysheet.write(0, 31, 'workYear')
    
    def main(kd,pages,row):
        # 通过访问主网页获取cookies和session
        url1 = 'https://www.lagou.com/jobs/list_python?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput='
        # 提交ajax请求,获取json数据
        url = "https://www.lagou.com/jobs/positionAjax.json?px=default&needAddtionalResult=false"
        # 请求头
        headers = {
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'Referer': 'https://www.lagou.com/jobs/list_python?px=default&city=%E5%85%A8%E5%9B%BD',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
            'Host': 'www.lagou.com'
        }
    
        # 使用data来决定获取多少页的json数据
        for page in range(1, pages):
            data = {
                'first': 'false',
                'pn': page,
                'kd': 'python'
            }
            data['kd']=kd
            s = requests.Session()  # 建立session
            s.get(url=url1, headers=headers, timeout=1)
            cookie = s.cookies  # 获取cookie
            respon = s.post(url=url, headers=headers, data=data, cookies=cookie, timeout=3)
            time.sleep(1)
            #print(respon.text)
            result = json.loads(respon.text)
            info = result["content"]["positionResult"]["result"]
            print(len(info))
            for j in info:
            
                mysheet.write(row, 0, j['positionId'])
                mysheet.write(row, 1, j['positionName'])
                mysheet.write(row, 2, j['companyId'])
                mysheet.write(row, 3, j['companyFullName'])
                mysheet.write(row, 4, j['city'])
                mysheet.write(row, 5, j['companyLabelList'])
                mysheet.write(row, 6, j['companyLogo'])
                mysheet.write(row, 7, j['companyShortName'])
                mysheet.write(row, 8, j['companySize'])
                mysheet.write(row, 9, j['createTime'])
                mysheet.write(row, 10, j['district'])
                mysheet.write(row, 11, j['education'])
                mysheet.write(row, 12, j['financeStage'])
                mysheet.write(row, 13, j['firstType'])
                mysheet.write(row, 14, j['formatCreateTime'])
                mysheet.write(row, 15, j['industryField'])
                mysheet.write(row, 16, j['jobNature'])
                mysheet.write(row, 17, j['lastLogin'])
                mysheet.write(row, 18, j['latitude'])
                mysheet.write(row, 19, j['linestaion'])
                mysheet.write(row, 20, j['longitude'])
                mysheet.write(row, 21, j['matchScore'])
        
                mysheet.write(row, 22, j['positionAdvantage'])
                mysheet.write(row, 23, j['positionId'])
                mysheet.write(row, 24, j['positionLables'])
                mysheet.write(row, 25, j['positionName'])
                mysheet.write(row, 26, j['secondType'])
                mysheet.write(row, 27, j['skillLables'])
                mysheet.write(row, 28, j['stationname'])
                mysheet.write(row, 29, j['subwayline'])
                mysheet.write(row, 30, j['thirdType'])
                mysheet.write(row, 31, j['workYear'])
                row=row+1
        workbook.save('py3.xls')
    # 获取前两页的职位json信息
    kd=input('输入关键字:')
    pages=int(input('输入要爬取多少页:'))
    main(kd,pages,1)
    # 结果如下:
    # {"resubmitToken":null,"requestId":null,"msg":null,"success":true,"content":{"hrInfoMap":{"6187967":{"userId":11765418,"phone":null,"positionName":"招聘经理",........."pageSize":15},"code":0}
    
    
    • 其中输入关键字,比如java,python等等
    • 第二步,输入需要爬的页数。
      在这里插入图片描述
    • 结果
      在这里插入图片描述
    展开全文
  • selenium 拉勾招聘网 爬取

    千次阅读 2020-03-25 17:03:26
    链接:https://pan.baidu.com/s/12a4JwvWRLXWIZioJeQgodQ 提取码:qyto 点击此处跳转(百度网盘/提取码:qyto )
    import time
    
    from selenium import webdriver
    from selenium.webdriver.support.ui import  WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    chrome_path = r'C:\chromedriver'
    
    driver = webdriver.Chrome(executable_path=chrome_path)
    
    # 先访问一个网址, 添加cookie的时候,知道是给哪个网站添加cookie
    driver.get('https://www.lagou.com/')
    
    # 添加cookie
    cookies = 'JSESSIONID=ABAAABAAAGFABEFFF62037272606B8365504C7CA43CCC4D; WEBTJ-ID=20191225115609-16f3b3297fe526-069c0e937564dc-12366b5b-1296000-16f3b3297ff73; _ga=GA1.2.1740114715.1577246169; _gid=GA1.2.1083003596.1577246169; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1577246169; user_trace_token=20191225115609-7c016708-26ca-11ea-a707-5254005c3644; LGUID=20191225115609-7c016b83-26ca-11ea-a707-5254005c3644; index_location_city=%E5%85%A8%E5%9B%BD; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2216f3b98927f8c7-0d2864da8f86c6-12366b5b-1296000-16f3b98928096e%22%2C%22%24device_id%22%3A%2216f3b98927f8c7-0d2864da8f86c6-12366b5b-1296000-16f3b98928096e%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_referrer%22%3A%22%22%2C%22%24latest_referrer_host%22%3A%22%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%7D%7D; ab_test_random_num=0; LG_HAS_LOGIN=1; hasDeliver=0; privacyPolicyPopup=false; showExpriedIndex=1; showExpriedCompanyHome=1; showExpriedMyPublish=1; TG-TRACK-CODE=search_code; SEARCH_ID=6169046f376c4f88a7bfe4f32033e808; LGSID=20191226121118-c4434383-2795-11ea-b022-525400f775ce; PRE_UTM=; PRE_HOST=; PRE_SITE=https%3A%2F%2Fwww.lagou.com%2Fjobs%2Flist_python%3FlabelWords%3Dsug%26fromSearch%3Dtrue%26suginput%3Dpython; PRE_LAND=https%3A%2F%2Fwww.lagou.com%2F; gate_login_token=ca6cb1148fa654cad3ed6519b259f95c496995ce77f580e124377aefdb9ddc27; LG_LOGIN_USER_ID=e864cbaa46680eaf7cd6d341c7c541033c96b69b441ba187895db21effb2664c; _putrc=5BD360BA80976936123F89F2B170EADC; login=true; unick=louis; X_HTTP_TOKEN=1007b16937e794e29153337751bc7492bc2d6807a7; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1577333520; LGRID=20191226121159-dccedb9e-2795-11ea-b022-525400f775ce'
    cookie_list = cookies.split(';')
    
    for data in cookie_list:
        d = data.split('=')
        driver.add_cookie({'name': d[0].strip(), 'value': d[1].strip()})
    
    
    driver.get('https://www.lagou.com/jobs/list_/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput=')
    
    # 输入搜索内容
    driver.find_element_by_id('keyword').send_keys('Python爬虫')
    
    # 点击搜索
    driver.find_element_by_id('submit').click()
    
    # 关闭弹框 / 给也不要
    time.sleep(2)
    driver.find_element_by_class_name('body-btn').click()
    lis = []
    
    # 点击下一页的效果
    while True:
    
        # 找到页面中所有职位的连接
        links = driver.find_elements_by_xpath('//ul[@class="item_con_list"]//a[@class="position_link"]')
    
        for link in links:
            href = link.get_attribute('href')
            # 打开一个新的tab页
            driver.execute_script("window.open('" + href + "')")
    
            # 切换到新开的的页面
            driver.switch_to.window(driver.window_handles[1])
    
            # 获取招聘公司名称
            name = driver.find_element_by_xpath('//h4[@class="company"]').text
            value = driver.find_element_by_xpath('//div[@class="job-detail"]').text
            # 关闭当前页面
            driver.close()
    
            # 跳到第一页
            driver.switch_to.window(driver.window_handles[0])
    
            # 保存内容 / 公司为key, 岗位职责为value
            lis.append({name:value})
    
        # 等待 下一页 按钮 加载出来
        WebDriverWait(driver, 10).until(
                EC.presence_of_element_located((By.XPATH, '//span[@action="next"]'))
            )
    
        next_page = driver.find_element_by_xpath('//span[@action="next"]')
    
        # 获取next_page 的class 属性
        class_name = next_page.get_attribute('class')
    
        if class_name == 'pager_next pager_next_disabled':
            print(lis)
            break
    
        next_page.click()
    
    
    点击以下链接跳转(库卡仿真软件)

    库卡KUKA仿真软件 WorkVisual_V4.0.18_Build0082 百度网盘 永久分享链接

    展开全文
  • 之前利用scrapy爬取伯乐在线,知乎时是用到scrapy的basic模板,即Spider,这次用CrawlSpider来爬取拉勾网的招聘信息 CrawlSpider基于Spider,但是可以说是为全站爬取而生,是目前最流行的scrapy模板 二,创建...

    一,前言

      之前利用scrapy爬取伯乐在线,知乎时是用到scrapy的basic模板,即Spider,这次用CrawlSpider来爬取拉勾网的招聘信息

      CrawlSpider基于Spider,但是可以说是为全站爬取而生,是目前最流行的scrapy模板


    二,创建工程

    在cmd中cd进入项目的目录,然后输入:scrapy gensipder -t crawl lagou  www.lagou.com

    默认生成:


    三,简要说明

    CrawlSpider是爬取那些具有一定规则网站的常用的爬虫,它基于Spider并有一些独特属性,也就是之前spider的爬取规则现在也适用,下面的参数可以按ctrl点击CrawlSpider获取源码

    • rules: 是Rule对象的集合,用于匹配目标网站并排除干扰
    • parse_start_url: 用于爬取起始响应,必须要返回Item,Request中的一个。

    因为rulesRule对象的集合,所以这里也要介绍一下Rule对象

    它有几个参数:linkExtractorcallback=Nonecb_kwargs=Nonefollow=Noneprocess_links=Noneprocess_request=None

    • callback为回调函数,传入一个str,即回调函数的名字
    • follow为boolean类型,为true就继续跟踪,为false则不往下跟踪

    其中的linkExtractor既可以自己定义,也可以使用已有LinkExtractor类,主要参数为:

    • allow:满足括号中“正则表达式”的值会被提取,如果为空,则全部匹配。
    • deny:与这个正则表达式(或正则表达式列表)不匹配的URL一定不提取。
    • allow_domains:会被提取的链接的domains。
    • deny_domains:一定不会被提取链接的domains。
    • restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接。还有一个类似的restrict_cs
    四,拉勾招聘网招聘信息的爬取

    4.1  rule的编写

    输入拉勾网首页:https://www.lagou.com/

    观察职位的url:https://www.lagou.com/jobs/3157876.html   为https://www.lagou.com/jobs/\d+.html  格式

    此外我们在进入职位url之前必须从 https://www.lagou.com/zhaopin/Android/  ,https://www.lagou.com/gongsi/j118082.html之类的url进入,所以匹配https://www.lagou.com/zhaopin/*    https://www.lagou.com/gongsi/j\d+

    4.2 parse_item的编写

    这里不详细分析了,在如图一个个用css,或者xpath分析

    具体代码如下:

    # -*- coding: utf-8 -*-
    import scrapy
    from scrapy.linkextractors import LinkExtractor
    from scrapy.spiders import CrawlSpider, Rule
    from ArticleSpider.items import FirstItemLoader, LagouJobItem
    
    class LagouSpider(CrawlSpider):
        name = 'lagou'
        allowed_domains = ['www.lagou.com']
        start_urls = ['https://www.lagou.com/zhaopin/Python/']
    
        rules = (
            Rule(LinkExtractor(allow=("zhaopin/.*",)),follow=True),
            Rule(LinkExtractor(allow=("gongsi/j\d+.html",)), follow=True),
            Rule(LinkExtractor(allow=r'jobs/\d+.html'), callback='parse_job', follow=True),
        )
    
    
        def parse_job(self, response):
            #解析拉勾网的职位
            # pass
            # #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()
            # #i['name'] = response.xpath('//div[@id="name"]').extract()
            # #i['description'] = response.xpath('//div[@id="description"]').extract()
            item_loader = FirstItemLoader(item=LagouJobItem(),response=response)
            item_loader.add_css("title", ".job-name::attr(title)")
            item_loader.add_value("url", response.url)
    
            item_loader.add_css("salary", ".job_request .salary::text")
            item_loader.add_xpath("job_city", "//*[@class='job_request']/p/span[2]/text()")
            item_loader.add_xpath("work_years", "//*[@class='job_request']/p/span[3]/text()")
            item_loader.add_xpath("degree_need", "//*[@class='job_request']/p/span[4]/text()")
            item_loader.add_xpath("job_type", "//*[@class='job_request']/p/span[5]/text()")
    
            item_loader.add_css("tags", '.position-label li::text')
            item_loader.add_css("publish_time", ".publish_time::text")
            item_loader.add_css("job_advantage", ".job-advantage p::text")
            item_loader.add_css("job_desc", ".job_bt div")
            item_loader.add_css("job_addr", ".work_addr")
            item_loader.add_css("company_name", "#job_company dt a img::attr(alt)")
            item_loader.add_css("company_url", "#job_company dt a::attr(href)")
            # item_loader.add_value("crawl_time", datetime.now())
    
            job_item = item_loader.load_item()
            # print(job_item)
            yield job_item
            pass

    其中items代码如下:

    import re
    import scrapy
    from scrapy.loader.processors import  TakeFirst,MapCompose,Join
    from scrapy.loader import ItemLoade

    class FirstItemLoader(ItemLoader):
        #自定义itemloader,继承scrapy的ItemLoader类
        default_output_processor = TakeFirst()

    def remove_splash(value):
        #去掉工作城市的斜线
        return value.replace("/","")
    
    class LagouJobItem(scrapy.Item):
        #拉勾网职位信息
        title = scrapy.Field()
        url = scrapy.Field()
        url_object_id = scrapy.Field()
        salary = scrapy.Field()
        job_city = scrapy.Field(
            input_processor=MapCompose(remove_splash),
        )
        work_years = scrapy.Field(
            input_processor = MapCompose(remove_splash),
        )
        degree_need = scrapy.Field(
            input_processor = MapCompose(remove_splash),
        )
        job_type = scrapy.Field()
        publish_time = scrapy.Field()
        job_advantage = scrapy.Field()
        job_desc = scrapy.Field()
        job_addr = scrapy.Field(
        )
        company_name = scrapy.Field()
        company_url = scrapy.Field()
        tags = scrapy.Field(
            input_processor = Join(",")
        )
        crawl_time = scrapy.Field()


    在这里代码基本编写完成,这里忽略了数据库的持久化,可以在知乎爬取那里学习,可以在cmd试着运行:cd进入项目目录后,输入:scrapy crawl lagou运行项目:

    运行结果:  

    如果没有爬取成功提示要登录,可以看看下面的应对措施

    五,应对反爬措施

    由于拉勾的反爬措施比较严格,所以可以会需要登录才可以访问,这里采取了反反爬虫的方法有:

    5.1,设置随机的user-agent

    首先导入 fake_useragent     :pip install  fake_usergent

    然后在中间件 middlewares.py 添加以下代码:

    from fake_useragent import UserAgent
    #随机更换user-agent
    class RandomUserAgentMiddlware(object):
        def __init__(self,crawler):
            super(RandomUserAgentMiddlware, self).__init__()
            self.ua = UserAgent()
    
        @classmethod
        def from_crawler(cls,crawler):
            return cls(crawler)
    
        def process_request(self,request,spider):
            request.headers.setdefault('User-Agent',self.ua.random)
    这样每次下载页面时就会传入不同的 user-agent
    别忘了在setting添加middlewares设置,否则该设置不生效
    DOWNLOADER_MIDDLEWARES = {
       'ArticleSpider.middlewares.RandomUserAgentMiddlware': 543,
       'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
      
    }


      5.2,设置下载延迟
    在setting中添加设置:
    DOWNLOAD_DELAY = 10

    这样基本就能爬取拉勾网大部分招聘信息了,如果还是不行,还能采取selenium驱动谷歌浏览器来访问,还可以设置自动登录,或者自动修改ip来解决,这里就不一一列举
    
    
    
    
    六,问题
    
     
    
     
    
     
     

    CrawlSpider如何工作的?

    因为CrawlSpider继承了Spider,所以具有Spider的所有函数。 首先由start_requestsstart_urls中的每一个url发起请求(make_requests_from_url),这个请求会被parse接收。在Spider里面的parse需要我们定义,但CrawlSpider定义parse去解析响应(self._parse_response(response, self.parse_start_url, cb_kwargs={}, follow=True)_parse_response根据有无callback,followself.follow_links执行不同的操作

     def _parse_response(self, response, callback, cb_kwargs, follow=True): ##如果传入了callback,使用这个callback解析页面并获取解析得到的reques或item if callback: cb_res = callback(response, **cb_kwargs) or () cb_res = self.process_results(response, cb_res) for requests_or_item in iterate_spider_output(cb_res): yield requests_or_item ## 其次判断有无follow,用_requests_to_follow解析响应是否有符合要求的link。 if follow and self._follow_links: for request_or_item in self._requests_to_follow(response): yield request_or_item

    其中_requests_to_follow又会获取link_extractor(这个是我们传入的LinkExtractor)解析页面得到的link(link_extractor.extract_links(response)),对url进行加工(process_links,需要自定义),对符合的link发起Request。使用.process_request(需要自定义)处理响应。






    转载于:https://my.oschina.net/u/1987703/blog/1617574

    展开全文
  • # -*- coding: utf-8 -*- """ Created on Mon ...null,"msg":null,"success":true,"content":{"hrInfoMap":{"6187967":{"userId":11765418,"phone":null,"positionName":"招聘经理",........."pageSize":15},"code":0}
  • Python 爬取拉勾招聘信息 故事背景 最近有个好哥们啊浪迫于家里工资太低,准备从北方老家那边来深圳这边找工作,啊浪是学平面设计的知道我在深圳这边于是向我打听深圳这边平面设计薪资水平,当时我有点懵逼这个行业...
  • 拉勾招聘数据分析

    2021-08-28 20:21:25
    本项目主要是以拉勾招聘网对11个城市的招聘信息分析,主要通过tableau和sql分析,整个项目可分为项目目的的确定,数据来源,数据分析,项目总结(因数据处理是,没有重复值和缺失值,所以不做此步骤)。 三、项目...
  • 岗位职责:1. 高层管理职位,协助决策层制定公司发展战略,负责销售和市场营销短期及长期的决策和战略,对公司中长期目标的达成产生重要影响,向总经理汇报。2. 负责建立和管理销售队伍(15-20人),进行渠道销售和...
  • 职位职责:Founded in 2012, ByteDance is a technology company operating a range of content platforms that inform, educate, entertain and inspire people across languages, cultures and geographies....
  • = degree jobs_info.append(item) print('列表页获得数据:', jobs_info) # 将获取的每一条招聘信息,保存到mongo self.mongo_db['jobs'].insert_many(jobs_info) def parse_detail_page(self, page_source): """ :...
  • 1.简介Angular JS仿拉勾招聘网完成前端职位展示,职位搜索,登录,收藏职位功能;2.技术框架Angular JS Bower使用管理js包Gulp 3.0用于编译前端项目代码3.开发过程3.1建造项目框架bower约会第三方依赖npm初始化管理...
  • Python爬虫 分析拉勾招聘信息 在上一篇文我已经爬取了拉勾的招聘信息,那么在这一篇文,我将根据爬取到的数据(具体而言在本文中为职位描述)计算平均数,中位数等工资统计量,以及使用TF-IDF方法分析出关键字,从而...
  • 抽拉勾网

    2016-07-05 11:42:07
    美国最大招聘网站是Monster,对应中国的51job和智联招聘,所有行业通吃;然后是Dice,70%收入来自IT行业。其它行业就没有对应的Dice了。互联网公司的人平均2年跳槽一次,其它行业不会。互联网对人才依赖度高
  • ▪ 负责各类大型网站的爬虫开发,解决高并发请求、海量数据存储等问题;▪ 深刻理解爬虫数据的价值,竭尽全力追求数据的完整性、及时性;▪ 主动思考现有爬虫框架的迭代方向,为提高开发效率及质量努力;...
  • 由于最近在找工作,智联跟前程无忧都有一键投递功能,拉勾跟BOSS直聘的话只能一个一个点,对于正在海投的小伙伴们来说工作量挺大的,下面给大家分享个用python+selenium编写的自动投递脚本。 主要用的谷歌浏览器、...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 一、基本思路 ...有30页,每个页面有15条招聘信息。 二、selenium爬虫 from selenium import webdriver import time import logging import random import openpyxl wb = openpyxl.Workbook(.
  • 1、简介在爬取之前,我先用requests包get了一下拉勾的官网,发现源码并没有包含我想要的招聘信息,这时候就麻烦,当然解决的方法有很多种,可以抓包得到招聘信息的json数据,通过解析json来获取招聘信息,另外还可以...
  • 做出合理选择网站上展示的相关信息来判断面试时通过面试官的言行举止判断了解行业情况,清晰找准定位Java/C++薪资拉勾Java岗招聘统计挑选命中率高的好工作自我评估技术工作经验个人提升求职方向确定岗位流程自我提问...
  • 所以这次想要重新挑战一下,爬取拉勾展示的招聘数据。 2. 对拉勾网进行简单分析后,发现至少有两种抓取数据的方法:  1)通过拉勾首页获取所有职业分类及其对应url,然后对每个职业分类构造url进行翻页,直接从...
  • if (your_passions.includes('coding')) {switch(your_stacks) {case 'Node.js':case 'Python':case 'Kubernetes':case 'Serverless':console.log('Join AfterShip');break;}}岗位职责1、负责持续优化运维解决方案,...
  • 岗位职责1、负责持续优化运维解决方案,包括但不限于容灾预案、智能调度、弹性扩容、精细化监控等,解决运营中遇到的各种问题;2、负责梳理提炼客户的日常问题和需求,优化处理效率,推动客户诉求的落地;...
  • 仿拉勾网招聘HTML+CSS

    2019-03-04 15:10:25
    精仿拉勾网招聘系统的HTML+CSS代码
  • 拉勾搜索职位时,通过谷歌F12抓取请求信息 发现请求是一个post请求,参数为: 返回的是json数据 有了上面的基础,我们就可以构造请求了 然后对获取到的响应反序列化,这样就获取到了json格式的招聘信息...
  • 【企业分析】拉勾、Boss直聘、猎聘

    千次阅读 2020-11-23 23:02:38
    【企业分析】拉勾、Boss直聘、猎聘 前言 简单了解一下这家互联网公司。 打算从第三方平台爱企查了解我感兴趣的基本信息。 官网信息、第三方评价、研报等暂时不探索。 文章目录【企业分析】拉勾、Boss直聘、猎聘前言...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,382
精华内容 952
关键字:

拉勾招聘网