python应用实践之boss数据获取

2024-06-08 17:34:08 浏览数 (1)

boos直聘,想必对于找工作的同志都非常熟悉,以其'招人快 人才多 匹配准 公开透明'等优点位居行业的前沿,今天我们就用scrapy框架配合selenium进行岗位,薪资.待遇,公司 等信息进行爬取。boss直聘网站: www.zhipin.com 我想爬取过这个网站的同学都知道他的反爬还是很讨厌的,信息都是用cookies渲染生成的,cookies时效很短,很快就失效了,快速访问还会封掉你的ip ,封了ip第一反映就使用代理吧,有时候使用代理你就会发现,会提示ip异常,然后进验证 并且需要接入接码平台了。当然这些都是在获取比较详细的信息的前提下,如果我们只是访问首先信息就没有那么大的难度了,这种情况下我们就直接加上代理IP就搞定了。不过也需要高质量的代理IP才可以,比如由亿牛云提供的隧道IP,我们可以示例下使用隧道IP获取数据的成功率是什么样的。简单示例如下:

代码语言:javascript复制
#! -*- encoding:utf-8 -*-
        import base64            
        import sys
        import random

        PY3 = sys.version_info[0] >= 3

        def base64ify(bytes_or_str):
            if PY3 and isinstance(bytes_or_str, str):
                input_bytes = bytes_or_str.encode('utf8')
            else:
                input_bytes = bytes_or_str

            output_bytes = base64.urlsafe_b64encode(input_bytes)
            if PY3:
                return output_bytes.decode('ascii')
            else:
                return output_bytes

        class ProxyMiddleware(object):                
            def process_request(self, request, spider):
                # 代理服务器(产品官网 www.16yun.cn)
                proxyHost = "t.16yun.cn"
                proxyPort = "31111"

                # 代理验证信息
                proxyUser = "username"
                proxyPass = "password"

                request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)

                # 添加验证头
                encoded_user_pass = base64ify(proxyUser   ":"   proxyPass)
                request.headers['Proxy-Authorization'] = 'Basic '   encoded_user_pass                    

                # 设置IP切换头(根据需求)
                tunnel = random.randint(1,10000)
                request.headers['Proxy-Tunnel'] = str(tunnel)
```这里的代码示例只是给大家分享了代理在爬虫程序中的实现过程,数据获取的详细代码下次可以分享出来有需要的同学可以参考下。代理在数据爬取过程中也是很重要的一部分,不同的网站对IP的需求有差别,只要是有价值的网站对IP的需求肯定比较高的,比较靠谱的代理商中推荐亿牛云代理IP。

0 人点赞