zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python如何通过分布式爬虫爬取舆情数据

2023-06-13 09:18:17 时间

作为爬虫,有时候会经历过需要爬取站点多吗,数据量大的网站,我们身边接触最频繁、同时也是最大的爬虫莫过于几大搜索引擎。今天我们来聊一个同样是站点多数据量的爬取方向,那就是舆情方向的爬虫。

一般的爬虫是在一台机器上进行爬取某个网站的数据,分布式爬虫是多台机器上同时爬取某个网站的数据。无论是舆情方向的爬虫还是电商方向的爬虫,要承担的爬取量都是非常大的。少则每日百万数据,多则每日数十亿数据,因此分布式爬虫对这种大型数据的爬取很适用。

但是这些网站可不会轻易让你爬取站点上面的内容,它们往往会从网络协议、浏览器特征、编程语言差异、人机差异等方面给爬虫工程师设置障碍,常见的有滑块验证码、拼图验证码、封 IP、检查 COOKIE、要求登录、设定复杂的加密逻辑、混淆前端代码等。不过水来土掩、兵来将挡!爬虫工程师与目标网站的工程师你来我往的过招就像兵家尔虞我诈一般精彩,就如最常见的封IP,做为爬虫工程师来说,一份优质爬虫代理就简单的解决了这个障碍,但是这种大型的网站和数据建议使用产品质量好,技术支持到位,售后服务到位的代理商。这里简单分享下代理IP在分布式爬虫中的实现过程:

#! -*- encoding:utf-8 -*-

    import requests
    import random

    # 要访问的目标页面
    targetUrl = "http://httpbin.org/ip"

    # 要访问的目标HTTPS页面
    # targetUrl = "https://httpbin.org/ip"

    # 代理服务器(产品官网 www.16yun.cn)
    proxyHost = "t.16yun.cn"
    proxyPort = "31111"

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

    proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
        "host" : proxyHost,
        "port" : proxyPort,
        "user" : proxyUser,
        "pass" : proxyPass,
    }

    # 设置 http和https访问都是用HTTP代理
    proxies = {
        "http"  : proxyMeta,
        "https" : proxyMeta,
    }


    #  设置IP切换头
    tunnel = random.randint(1,10000)
    headers = {"Proxy-Tunnel": str(tunnel)}



    resp = requests.get(targetUrl, proxies=proxies, headers=headers)

    print resp.status_code
    print resp.text