zoukankan      html  css  js  c++  java
  • 【转】反爬虫机制

    反爬虫机制

    爬虫进阶

    登陆

    1.1 表单登陆

    1.2 cookie 登陆

    Scrapy模拟登陆

    1.3 验证码登陆

    1.3.1 验证码识别

    对于网站有验证码的情况,我们有三种办法:

    使用代理,更新IP;
    使用cookie登陆;
    验证码图片识别:

    1)利用开源的Tesseract-OCR系统进行验证码图片 的下载及识别,再将识别的字符传到爬虫系统进行模拟登陆。

    2)将验证码图片上传到打码平台上进行识别。如果不成功,可以再次更新验证码识别,直到成功为止。

    验证码识别项目

    2 反爬虫机制的处理

    2.1 防止服务器长时间不响应——设置时间间隔(timeout)

    2.2 防止爬虫抓取过快——items类与时间设置

    2.3 伪装成浏览器或者”反盗链“

    3 断线重连

    def multi_session(session, *arg):
    retryTimes = 20
    while retryTimes>0:
    try:
    return session.post(*arg)
    except:
    print '.',
    retryTimes -= 1

    def multi_open(opener, *arg):
    retryTimes = 20
    while retryTimes>0:
    try:
    return opener.open(*arg)
    except:
    print '.',
    retryTimes -= 1
    这样我们就可以使用multi_session或multi_open对爬虫抓取的session或opener进行保持。

    4 多进程抓取

    多线程

    Python多进程抓取

    5 对于Ajax请求的处理

    6 自动化测试工具 Selenium

    [x] Selenium 爬虫实例
    代理登陆爬“去哪儿”
    爬取有两个需要注意的问题:

    如何监控一系列网站的更新情况,也就是说,如何进行增量式爬取?
    对于海量数据,如何实现分布式爬取?
    存储

    分析出我们需要的内容之后,接下来就是存储了。

    我们可以选择存入文本文件,也可以选择存入MySQL或MongoDB数据库等。

    存储有两个需要注意的问题:

    如何进行网页去重?
    内容以什么形式存储?
    ---------------------
    作者:仲夏荧之火
    来源:CSDN
    原文:https://blog.csdn.net/qq_40170358/article/details/79144552?utm_source=copy
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Xlua侧如何接受CSharp侧的可变参数
    C# 中如何精确地测量一段逻辑的执行时间
    C#中设计一个 ListPool 的方案
    unity中获取设备的信息
    Oracle-游标-取钱-存钱-转账
    Oracle 存储过程与java调用
    PL/SQL loop,while.for循环
    PL/SQL if case when
    PL/SQL %type %rowtype
    Oracle PLSQL入门
  • 原文地址:https://www.cnblogs.com/cfsxgogogo/p/9776936.html
Copyright © 2011-2022 走看看