400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

python爬虫的实践技巧有哪些呢-创新互联

这篇文章给大家介绍python爬虫的实践技巧有哪些呢,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

成都创新互联公司主营招远网站建设的网络公司,主营网站建设方案,app软件定制开发,招远h5小程序开发搭建,招远网站营销推广欢迎招远等地区企业咨询

数据的重要性

如今已然是大数据时代,数据正在驱动着业务开发,驱动着运营手段,有了数据的支撑可以对用户进行用户画像,个性化定制,数据可以指明方案设计和决策优化方向,所以互联网产品的开发都是离不开对数据的收集和分析,数据收集的一种是方式是通过上报API进行自身平台用户交互情况的捕获,还有一种手段是通过开发爬虫程序,爬取竞品平台的数据,后面就重点说下爬虫的应用场景和实践中会遇到的问题和反反爬虫的一些套路与技巧。


应用场景

爬虫开发

爬虫必备技巧

做爬虫开发,需要对WEB这块有相对全面深入的理解,这样后面遇到反爬虫才能得心应手,见招拆招


反爬虫对抗技巧

反爬虫可以分为服务端限制前端限制 
服务端限制:服务器端行请求限制,防止爬虫进行数据请求  
前端限制:前端通过CSS和HTML标签进行干扰混淆关键数据,防止爬虫轻易获取数据

设置请求头(服务端限制

签名规则(服务端限制 

延迟,或者随机延迟(服务端限制

代理IP(服务端限制

登录限制(服务端限制

验证码限制(服务端限制

CSS/HTML混淆干扰限制(前端限制 

前端通过CSS或者HTML标签进行干扰混淆关键数据,破解需要抽样分析,找到规则,然后替换成正确的数据

1 . font-face,自定义字体干扰

如列子:汽车X家论帖子,猫X电影电影评分


 




 Mercedes C+ 会员招募

破解思路:      
找到ttf字体文件地址,然后下载下来,使用font解析模块包对ttf文件进行解析,可以解析出一个字体编码的集合,与dom里的文字编码进行映射,然后根据编码在ttf里的序号进行映射出中文

可以使用FontForge/FontCreator工具打开ttf文件进行分析


2 . 伪元素隐藏式

通过伪元素来显示重要数据内容  
如例子:汽车X家





         -          

破解思路:      
找到样式文件,然后根据HTML标签里class名称,匹配出CSS里对应class中content的内容进行替换


3 . backgroud-image

通过背景图片的position位置偏移量,显示数字/符号,如:价格,评分等    
根据backgroud-postion值和图片数字进行映射


4 . html标签干扰

通过在重要数据的标签里加入一些有的没的隐藏内容的标签,干扰数据的获取  
如例子:xxIP代理平台



    2

    2          02
    .1

    .1     
         09     .     23     7

    7     

         .          3

    3     5:     80

破解思路:      
过滤掉干扰混淆的HTML标签,或者只读取有效数据的HTML标签的内容

... ... (反爬虫脑洞有多大,反反爬虫拆招思路就有多淫荡)


防止投毒 

  • 有些平台发现爬虫后并不会进行限制封杀,而是给爬虫提供误导的数据,影响竞品公司进行错误的决策,这就是投毒

  • 为了防止被投毒,需要对数据进行抽样校验


总结
目前大部分中小平台对防御爬虫的意识还比较薄弱,促使了爬虫的盛行,通过爬虫可以用比较小的代价,获取更大的利益
  1. 竞品数据的挖掘分析与应用对于业务增长有着举足轻重的作用,爬虫开发对于互联网产品公司的来说是个必不可少的技术

  2. 当前并没有一种可以完全避免爬虫的技术,所以添加反爬虫策略只是增加了一定的难度门槛,只要拆招技术够硬还是可以被突破翻越

  3. 反爬虫和反反爬虫是技术之间的较量,这场没有硝烟的战争永不停息。(程序员何必为难程序员)


供参考代码

font解析 C#和Python实现

  • C#

/// 需要引入PresentationCore.dll
private void Test() {
            string path = @"F:\font.ttf";
            //读取字体文件             
            PrivateFontCollection pfc = new PrivateFontCollection();
            pfc.AddFontFile(path);
            //实例化字体
            Font f = new Font(pfc.Families[0], 16);
            //设置字体
            txt_mw.Font = f;

            //遍历输出
            var families = Fonts.GetFontFamilies(path);
            foreach (System.Windows.Media.FontFamily family in families) {
                var typefaces = family.GetTypefaces();
                foreach (Typeface typeface in typefaces) {
                    GlyphTypeface glyph;
                    typeface.TryGetGlyphTypeface(out glyph);
                    IDictionary characterMap = glyph.CharacterToGlyphMap;
                    var datas = characterMap.OrderBy(d => d.Value).ToList();
                    foreach (KeyValuePair kvp in datas) {
                        var str = $"[{kvp.Value}][{kvp.Key}][{(char)kvp.Key}]\r\n";
                        txt_mw.AppendText(str);
                    }
                }
            }

        }
  • python

# pip install TTFont
from fontTools.ttLib import TTFont
from fontTools.merge import *
me = Merger()
font = TTFont('./font.ttf')
cmaps = font.getBestCmap()
orders = font.getGlyphOrder()
# font.saveXML('F:/1.xml')
print cmaps
print orders

关于python爬虫的实践技巧有哪些呢就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


标题名称:python爬虫的实践技巧有哪些呢-创新互联
链接URL:http://www.bluegullmedia.com/article/cdoepp.html
  • 网站建设专属方案

  • 网站定制化设计

  • 7X24小时服务

  • N对管家服务

让你的专属顾问为你服务

0.0474s