榆树范文网

爬虫技术总结(推荐10篇)

72

爬虫技术总结 第1篇

过去的一年的整体上是紧张的、忙碌的、充实的。因为我刚刚来到远洋,所以对我来说这也是充满希望的一年。展望新的工作年度,希望能够再接再砺,同时也加强自身的能力,工作中与同事多沟通,多关心了解其他部门的工作性质,进一步提高自己专业知识技能,积极吸收新的观念与设计理念,要继续在自己的工作岗位上踏踏实实做事,老老实实做人,争取做出更大的成绩来。

我们经过痛苦煎熬,终于做出来的时候倍感轻松。

不得不说爬虫确实是一个有趣的“杂学”,为什么这么理解呢?我刚开始接触到爬虫,是因为自己无意间想学习python,爬虫又是一个比较快入手的学习方向,也是一个很好的就业方向,就开始学习爬虫。本就着大道至简的道理,佛系学习原则,从刚开始的python基础,数据结构,函数,类,到后面学习爬虫的基础模块,requestsurllibselenium,还要学习一些前端的知识,学习了这些以后,基本上能解决大部分的爬虫开发了。本想着到这就结束了,陆陆续续在工作中遇到了js问题,不懂咋办,去学习呀!学习了一些js逆向知识,chrome断点调试。数据量需求越来越大,学习多进程,多线程,协程,scrapy框架,后面的分布式爬虫。。。目前还没接触到app逆向,反编译等。。。爬虫确实是一个很有意思的“杂学”,感觉啥都要接触,但很多知识只需要能看得懂就好。

我们发现, 如果是图片, 它们都藏在这样一个 tag 中:

所以, 我们可以用 soup 将这些 tag 全部找出来, 但是每一个 img 的链接(src)都可能不同. 或者每一个图片有的可能是 jpg 有的是 png, 如果我们只想挑选 jpg 形式的图片, 我们就可以用这样一个正则 r’.*?.jpg’ 来选取. 把正则的 compile 形式放到 BeautifulSoup 的功能中, 就能选到符合要求的图片链接了.

又或者我们发现, 我想选一些课程的链接, 而这些链接都有统一的形式, 就是开头都会有 https://morvan., 那我就将这个定为一个正则的规则, 让 BeautifulSoup 帮我找到符合这个规则的链接.

接下来,给出一个实战小例子:爬百度百科

爬虫技术总结 第2篇

添加 cookie 绕过登录

比如我们登录百度账号比较费劲,每次都需要登录也比较繁琐,我们 F12 打开页面调试工具,登录后找到[]文件,在 cookie 中,我们发现很多值,其中图中圈起来的就是我们要找的值。

我们在访问 baidu 链接的时候加上这个 cookie 值,这样就是直接登录后的百度账号了。 下载浏览器驱动

我们用 selenium 启动浏览器时,需要下载后对应的驱动文件并放在 Python 安装的根目录下,比如我会用到谷歌 Chrome 浏览器。

谷歌浏览器驱动下载地址:

启动 Chrome 浏览器绕过登录

我们每次打开浏览器做相应操作时,对应的缓存和 cookie 会保存到浏览器默认的路径下,我们先查看个人资料路径,以 chrome 为例,我们在地址栏输入 chrome://version/

图中的个人资料路径就是我们需要的,我们去掉后面的 \Default,然后在路径前加上「–user-data-dir=」就拼接出我们要的路径了。

接下来,我们启动浏览器的时候采用带选项时的启动,这种方式启动浏览器需要注意,运行代码前需要关闭所有的正在运行 chrome 程序,不然会报错。 selenium 自动化启动浏览器后我们会发现我之前保存的书签完整在浏览器上方,baidu 账号也是登录的状态。 另外,下面的这种图形验证码,我们可以登录后(cookie 有一定的时效,貌似有 10 天半个月左右),把上面代码中的链接换一下,再用上面的方法也可以实现绕过登录页的图形验证码。

python提供了cookielib模块用于处理cookies,cookielib模块的主要作用是提供可存储cookie的对象。

在版本导入cookielib直接import cookielib python3中为

在爬虫中如果遇到了cookie的反爬如何处理?

在抓包工具中捕获cookie,将其封装在headers中

应用场景:cookie没有有效时长且不是动态变化

使用session机制

使用场景:动态变化的cookie

session对象:该对象和requests模块用法几乎一致.如果在请求的过程中产生了cookie,如果该请求使用session发起的,则cookie会被自动存储到session中。

爬虫技术总结 第3篇

. 系统架构

. 执行流程

总结爬虫开发过程,简化爬虫执行流程如下图所示:

爬虫运行主要流程如下:

(1) Scrapy 启动 Spider 后加载 Spaider 的 start_url,生成 request 对象;

(2) 经过 middleware 完善 request 对象(添加 IP 代理、User-Agent);

(3) Downloader 对象按照 request 对象下载页面;

(4) 将 response 结果传递给 spider 的 parser 方法解析;

(5) spider 获取数据封装为 item 对象传递给 pipline,解析的 request 对象将返回调度器进行新一轮的数据抓取;

是 scrapy 框架的入口文件,settings 节点指定爬虫的配置信息,deploy 节点用于指定 scrapyd 服务的部署路径。

settings 主要用于配置爬虫启动信息,包括:并发线程数量、使用的 middleware、items 等信息;也可以作为系统中的全局的配置文件使用。

注:目前主要增加了 redis、数据库连接等相关配置信息。

middleware 定义了多种接口,分别在爬虫加载、输入、输出、请求、请求异常等情况进行调用。

注:目前主要用户是为爬虫增加 User-Agent 信息和 IP 代理信息等。

用于定义处理数据的 Pipline 对象,scrapy 框架可以在 文件中配置多个 pipline 对象,处理数据的个过程将按照 配置的优先级的顺序顺次执行。

注:系统中产生的每个 item 对象,将经过 配置的所有 pipline 对象。

用于定义不同种数据类型的数据字典,每个属性都是 Field 类型;

. spider 目录

用于存放 Spider 子类定义,scrapy 启动爬虫过程中将按照 spider 类中 name 属性进行加载和调用。

爬虫技术总结 第4篇

然后就是解压缩数据:

写爬虫时肯定是要去考虑乱码的问题,可以参考一下以下思路:

1)解析服务端返回的header中content-type. 得到编码,改编码是什么就按照什么去解析返回的字节流。

2)如果服务端header中没有content-type 信息,就按照 utf-8 解析返回的内容 。

再去解析meta标签得到编码,并作为最终的解析服务端返回字节流的编码。(因为按照gbk 或者 utf-8 还是其他的编码 解析charset=utf-8 的结果都是一样的,因为它们都兼容ascii编码,也就是前2个字节的码表都一样)

3)如果标签meta中也没有编码的话,那么可以尝试着去得到 en ,zh-CN ,zh. 然后用相应的编码解析返回的内容。

不过经过前面的3步也基本能得到编码类型了。

爬虫技术总结 第5篇

总结 Scrapy 使用过程中存在的问题,以及爬虫系统后期上线需求考虑,采用 Java 语言进行爬虫的设计与开发。具体原因如下:

(1)上线基础环境依赖:需要使用线上 Clover、JimDB、MySQL 等基础环境;

(3)集中部署:通过部署通用爬虫方式,抓取所有支持站点的爬虫,解决 Scrapy 框架一站点一部署问题。

(4)反 - 反爬虫:部分站点针对 Scrapy 框架请求特点,实施反爬虫策略(如:天猫),拒绝所有爬虫请求。WebMagic 模拟浏览器请求,不受该爬虫限制。

总体架构

WebMagic 的结构分为 Downloader、PageProcessor、Scheduler、Pipeline 四大组件,并由 Spider 将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic 的设计参考了 Scapy,但是实现方式更 Java 化一些。

而 Spider 则将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为 Spider 是一个大的容器,它也是 WebMagic 逻辑的核心。

WebMagic 总体架构图如下:

WebMagic 的四个组件

Downloader

爬虫技术总结 第6篇

多线程并发执行是 Go 语言的优势之一,Go 语言通过 “协程” 实现并发操作,当执行的协程发生 I/O 阻塞时,会由专门协程进行阻塞任务的管理,对服务器资源依赖更少,抓取效率也会有所提高。

引入包

使用流程

使用流程主要是说明使用 colly 抓取数据前的准备工作

抓取流程

每次抓取数据流程中的各个节点都会尝试触发用户注册的抓取回调函数,以完成提取数据等需求,抓取流程如下。

colly 也提供了部分辅助接口,协助完成数据抓取分析流程,以下列举一部分主要的支持。

爬虫技术总结 第7篇

pychart自动对齐:Ctrl+Alt+L

本节将遇到第一个反爬手段:UA

UA介绍:User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本。浏览器内核、浏览器渲染引擎、浏览器语言、浏览器插件等。

用法代码:

此时引入一个知识:编码的由来

该方法可以将一个字符串(例如“xxx”)转化为Unicode编码格式。

该方法可以将一个字典里的所有字符串都转化为Unicode编码格式,并将每个字典通过‘&’字符进行连接起来。

如上图,接下来是对POST请求方式进行访问以及爬取数据:

 注意:

通过上图代码发现,该代码比之前的代码的header多了好多的内容:

通过阅读上面的博客,我们知道了ajax的基本概念。

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指⼀种创建交互式⽹⻚应⽤的⽹⻚开发技术。

Ajax 是⼀种⽤于创建快速动态⽹⻚的技术。

Ajax 是⼀种在⽆需重新加载整个⽹⻚的情况下,能够更新部分⽹⻚的技术。

通过在后台与服务器进⾏少量数据交换,Ajax 可以使⽹⻚实现异步更新。这意味着可以在不重新加载整个⽹⻚的情况下,对⽹⻚的某部分进⾏更新。

传统的⽹⻚(不使⽤ Ajax)如果需要更新内容,必须重载整个⽹⻚⻚⾯。

爬虫技术总结 第8篇

安装:pip install twisted pip install scrapy

在终端打开python目录路径,

终端输入 scrapy startproject 项目名称。

创建完成之后的样子长这样:

组成:

name = 'baidu' ‐‐‐》 运行爬虫文件时使用的名字

allowed_domains ‐‐‐》 爬虫允许的域名,在爬取的时候,如果不是此域名之下的url,会被过滤掉

start_urls ‐‐‐》 声明了爬虫的起始地址,可以写多个url,一般是一个

parse(self, response) ‐‐‐》解析数据的回调函数

在终端中输入:scrapy crawl 爬虫名称

注意:应在spiders文件夹内执行

爬虫技术总结 第9篇

xpath是浏览器上的一个扩展程序:Xpath Helper

xpath页面:

xpath快捷键:Ctrl+Shift+X

以上链接是详细的xpath基本语法;

接下来我们试试查询本地文件的xpath语句:

案例:获取站长素材的图片

代码:

jsonpath的使用:

语法小练习:

总结:

爬虫技术总结 第10篇

浏览器调用爬虫主要借助 Selenium 与 ChromeDriver 技术,通过本地化浏览器调用方式加载并解析页面内容,实现数据抓取。浏览器调用主要解决复杂站点的数据抓取,部分站点通过流程拆分、逻辑封装、代码拆分、代码混淆等方式增加代码分析的复杂度,结合请求拆分、数据加密、客户端行为分析等方式进行反爬操作,使爬虫程序无法模拟客户端请求过程向服务端发起请求。

该种方式主要应用于顺丰快递单号查询过程,订单查询采用腾讯滑动验证码插件进行人机验证。基本流程如下图所示:

首先配置 ChromeDriver 组件到操作系统中,组件下载地址:https:///,将文件保存到系统环境变量 “PATH” 中指定的任意路径下,建议:C:\Windows\system32 目录下。

组件添加验证:启用命令行窗口 -> 任意路径运行 “”,程序会以服务形式运行。

爬虫实现过程如下:

(1)启动浏览器:为了实现爬虫的并发,需要通过参数方式对浏览器进行优化设置;

启动浏览器

(2)加载页面:调用浏览器访问指定地址页面,并等待页面加载完成;

(3)切换 Frame:验证码采用 IFrame 方式加载到当前页面,接下来需要对页面元素进行操作,需要将 driver 切换到 iframe 中;

(_tcaptcha_popup_) (10) #等待切换完成,其中iframe加载可能有延迟

(4)滑动模块:滑动页面中的滑块到指定位置,实现验证过程;

滑动验证码操作过程如下图所示:

滑动模块执行距离在 240 像素前后,整个滑动过程取样 14 个,模拟抛物线执行过程控制滑动速度,将这个滑动过程分为 20 次移动(避免每次采样结果相同),分析如下图所示:

代码如下:

(4)数据解析及存储:数据解析过程主要是按照 id 或 class 进行元素定位获取文本内容,将结果插入到数据库即完成数据抓取过程。

(5)其他:采用 Python 的 threading 进行多线程调用,将订单编号保存到 Redis 中实现分布式任务获取过程,每执行一次将 POP 一个订单编号。

待改进:

(1)模块滑动速度和时间固定,可以进行随机优化;

(2)未识别滑块释放位置,目前采用滑块更新的方式重试,存在一定的错误率;

(3)如果不切换代理 IP,需要对浏览器启动进行优化,减少启动次数,提升抓取速度;