热门标签 | 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的执行环境,以确定使用的是不是浏览器。
 

 

 


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • 在工作了一年多后,我对现在的工作感到厌倦,没有激情,于是决定转行做程序猿。我在学校开了一个某宝店,通过自己摸索和努力,每个月挣够了零花钱和伙食费。我决定往互联网方向靠,不喜欢面对面和人沟通,而虚拟世界中的开发工作让我感到兴奋。我开始学习Java,感到困惑和怀疑自己的智商,但一篇鸡汤文激发了我学习Python的兴趣,我感到智商找回来了。我相信没有梦想的人和咸鱼没有什么区别。 ... [详细]
  • 前言:关于跨域CORS1.没有跨域时,ajax默认是带cookie的2.跨域时,两种解决方案:1)服务器端在filter中配置详情:http:blog.csdn.netwzl002 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
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社区 版权所有