热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python网络爬虫(webspider)系统化整理总结(一):入门

接触爬虫很久了,一直没有个系统的理解和整理,近来假日无事,总结一下。

-------------------------------------------以下是目录---------------------------------------------------------

一、爬虫概述及分类

二、爬虫的应用场景

三、爬虫的一般执行过程

四、爬虫技术常用的知识

五、反爬虫

-------------------------------------------以下是正文---------------------------------------------------------

一、爬虫概述及分类

        网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

       目前爬虫种类和一些基本信息如下:

      python网络爬虫(web spider)系统化整理总结(一):入门

二、爬虫的应用场景

python网络爬虫(web spider)系统化整理总结(一):入门

三、爬虫的一般执行过程

执行过程:

          python网络爬虫(web spider)系统化整理总结(一):入门

各部分运行关系流程图:

python网络爬虫(web spider)系统化整理总结(一):入门

四、爬虫技术常用的知识

       1、数据抓取:

                 1.1,涉及的过程主要是模拟浏览器向服务器发送构造好的http请求,一般是get或者post类型;

                 1.2,爬虫的实现,除了scrapy框架之外,python有很多可供调用的库:

                         urllib、requests、mechanize:用于获取URL对应的原始响应内容;

                         selenium、splinter通过加载浏览器驱动,获取渲染之后的响应内容,模拟程度高,但是效率低;

                 1.3,http协议、身份认证机制(COOKIE);

                 1.4,网络流量分析:Chrome、Firfox+Firebug、Fiddler、Burp Suite 。

       2、数据解析:

                  2.1,HTM结构、json数据格式、XML数据格式;

                  2.2,库:lxml、beautiful-soup4、re、pyquery

                  2.3,从页面提取所需数据的方法:

                           xpath路径表达式CSS选择器(主要用于提取结构化数据)

                           正则表达式(主要用于提取非结构化数据)。

       3、数据库:

                  3.1,结构化数据库:MySQL、SQLite等;

                  3.2,非结构化数据库:Redis等。

       4、其他:

                  4.1,多线程、任务调度、消息队列、分布式爬虫、图像识别、反爬虫技术等等。。。。。。

五、反爬虫

           1. 基本的反爬虫手段,主要是检测请求头中的字段,比如:User-Agent、 referer等。 针对这种情

况,只要在请求中带上对应的字段即可。 所构造http请求的各个字段最好跟在浏览器中发送的完全一

样,但也不是必须。

           2. 基于用户行为的反爬虫手段,主要是在后台对访问的IP(或User-Agent)进行统计,当超过某一

设定的阈值,给予***。 针对这种情况,可通过使用代理服务器解决,每隔几次请求,切换一下所用

代理的IP地址(或通过使用User-Agent列表解决,每次从列表里随机选择一个使用)。 这样的反爬

虫方法可能会误伤用户。

           3. 希望抓取的数据是如果通过ajax请求得到的,假如通过网络分析能够找到该ajax请求,也能分析出

请求所需的具体参数,则直接模拟相应的http请求,即可从响应中得到对应的数据。 这种情况,跟普

通的请求没有什么区别。

           4. 基于Java的反爬虫手段,主要是在响应数据页面之前,先返回一段带有Java代码的页面,用于验

证访问者有无Java的执行环境,以确定使用的是不是浏览器。
 

 

 


推荐阅读
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • Spark中使用map或flatMap将DataSet[A]转换为DataSet[B]时Schema变为Binary的问题及解决方案
    本文探讨了在使用Spark的map或flatMap算子将一个数据集转换为另一个数据集时,遇到的Schema变为Binary的问题,并提供了详细的解决方案。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 在 Android 开发中,`android:exported` 属性用于控制组件(如 Activity、Service、BroadcastReceiver 和 ContentProvider)是否可以被其他应用组件访问或与其交互。若将此属性设为 `true`,则允许外部应用调用或与之交互;反之,若设为 `false`,则仅限于同一应用内的组件进行访问。这一属性对于确保应用的安全性和隐私保护至关重要。 ... [详细]
  • 本文介绍了 AngularJS 中的 $compile 服务及其用法,通过示例代码展示了如何使用 $compile 动态编译和链接 HTML 元素。 ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
author-avatar
lisen0001
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有