爬虫

作者: 晨宇 | 来源:发表于2019-02-27 22:45 被阅读1次
  1. 框架选择分布式scrapy
  2. 通过Scrapyd 部署和运行整个爬虫项目,而项目的管理则可以使用Gerapy
  3. 代理池使用haipproxy动态抓取可用ip
  4. 通过airflow完成爬虫的调度

ip 池

  1. 使用tor,squid作为缓存,避免重复请求
  2. 使用ip代理
  3. 免费的ip池 高可用IP代理池 | haipproxy
  4. 自建adsl服务器

tor搭建

  1. brew install tor Mac下安装洋葱皮(Tor)并结合SS使用 - 吕滔博客

  2. 配置torcc

    copy /etc/tor/torrc.example /etc/tor/torrc
    
  3. 修改配置, tor --hash-password 'password'生成密码

  4. 添加 SOCKS5Proxy 127.0.0.1:1080,可以让tor借助shadowsocks建立链接,要么GFW会墙掉tor的很多链接,导致建立链接很慢,如何在墙内使用Tor | 圣僧

  5. 动态更新ip, bash -c "pip install -U requests[socks]" 安装socks

    import time
    import socket
    import socks
    import requests
    from stem import Signal
    from stem.control import Controller
    
    controller = Controller.from_port(port=9051)
    
    
    def connectTor():
        socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050, True)
        socket.socket = socks.socksocket
    
    
    def renew_tor():
        controller.authenticate()
        controller.signal(Signal.NEWNYM)
    
    
    def showmyip():
        r = requests.get('http://icanhazip.com/')
        ip_address = r.text.strip()
        print(ip_address)
    
    
    for i in range(10):
        renew_tor()
        connectTor()
        showmyip()
        time.sleep(10)
    
  6. How to make python Requests work via socks proxy - Stack Overflow

  7. Make requests using Python over Tor - Stack Overflow

squid

  1. 安装 brew install squid
  2. 安装squidmain
  3. 使用squidMain Mac OSX环境下使用Squid实现Web Caching - 比格·巴塔
  4. 代理配置 Squid 整合 Privoxy 與 Tor 架設匿名代理伺服器教學 - G. T. Wang
  5. scrapy 请求 -》 squid -》 privoxy -》tor

haipproxy

  1. 由于GFW的原因,某些网站需要通过科学上网才能进行访问和采集,如果用户无法访问墙外的网站,请将rules.py task_queue为 SPIDER_GFW_TASK和SPIDER_AJAX_GFW_TASK的任务enable属性设置为0或者启动爬虫的时候指定爬虫类型为common和 ajax

    python crawler_booter.py –usage crawler common ajax
    
  2. haipproxy/针对特定站点添加校验器.md at master · SpiderClub/haipproxy

  3. 先启动代理抓取爬虫和定时任务调度器(这里我只启动了common这个代理抓取任务)

    python crawler_booter.py --usage crawler common ajax

    python scheduler_booter.py --usage crawler common ajax

    再启动zhihu和init校验器和定时任务调度器, init没有调度任务

    python crawler_booter.py --usage validator init http https

    python scheduler_booter.py --usage validator http https

    调用代理IP客户端实现数据采集,参考run.sh。init校验器属于特殊校验器,无论单机还是分布式部署haipproxy的时候,都必须启动至少一个init校验器实例。建议部署足够多的init校验器 实例,因为通过实践发现,一个init校验器往往不够用。init校验器并没有相应的定时任务调度,它的资源获取是代理IP爬虫直接操作的

  4. python客户端调用

    from client.py_cli import ProxyFetcher
    args = dict(host='127.0.0.1', port=6379, password='123456', db=0)
    # 这里`zhihu`的意思是,去和`zhihu`相关的代理ip校验队列中获取ip
    # 这么做的原因是同一个代理IP对不同网站代理效果不同
    fetcher = ProxyFetcher('zhihu', strategy='greedy', redis_args=args)
    # 获取一个可用代理
    print(fetcher.get_proxy())
    # 获取可用代理列表
    print(fetcher.get_proxies()) # or print(fetcher.pool)
    
  5. scrapy-splash 安装

    docker run -p 8050:8050 -d --name mysplash --restart=always scrapinghub/splash
    

反爬虫

  1. 浅谈Python网络爬虫 - FreeBuf互联网安全新媒体平台
  2. 设置agent,referer
  3. 反反爬虫 luyishisi/Anti-Anti-Spider

相关文章

  • 11.20-11.26

    本周目标 爬虫 爬虫 爬虫 爬虫

  • 爬虫入门基础

    Day01 一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫...

  • 01-认识爬虫

    一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫三角之争 网...

  • 爬虫原理与数据抓取之一: 通用爬虫和聚焦爬虫

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索...

  • (了解)通用爬虫和聚焦爬虫--爬虫基础教程(python)(二)

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种.我们主要写通用爬虫。 通用爬虫 通...

  • Python 网络爬虫(一)

    网络爬虫的基本介绍 学习爬虫,我想主要从以下几个方面来切入 -爬虫的原理? -爬虫的作用? -爬虫的实现? -爬虫...

  • 7.爬虫概述

    爬虫概述 知识点: 了解 爬虫的概念 了解 爬虫的作用 了解 爬虫的分类 掌握 爬虫的流程 1. 爬虫的概念 模拟...

  • 1-基本概念

    简介 为什么选择Python做爬虫 需要技能 爬虫与反爬虫 网络爬虫类型 通用网络爬虫 聚焦网络爬虫 增量式网络爬...

  • 认识爬虫

    前言 我的爬虫笔记 经常看别人通过爬虫分析数据,很有意思,来了兴趣,就开始了爬虫之路。 爬虫 爬虫,即网络爬虫,大...

  • 爬虫入门

    为什么要学习爬虫? Python做爬虫优势 关于Python网络爬虫,我们需要学习的有: 什么是爬虫? 网络爬虫(...

网友评论

      本文标题:爬虫

      本文链接:https://www.haomeiwen.com/subject/wvnquqtx.html