设计网路爬虫过程中需要注意的解析问题

现在爬虫工作者越来越多,那么今天就讲讲就从解析数据和模拟器好好说说爬虫。

原本的称呼就是应该是叫解析网页,但是目前移动数据已经成为日常生活中不可或缺的数据走向,所以解析数据这个词来形容

会更加精准,解析数据。解析数据就是说当我们访问一个网址的时候,服务器就该网站把内容反馈给了我,我应该如何的把我

真正需要的数据提取出来。当服务器返回给我们的是html的时候,我需要提取到具体哪个 DIV 下面的内容;当服务器返回给我

的是 XML 时,我也需要提取某个标签下面的内容。

我们采用的最原始的方式就是使用「正则表达式」,「正则表达式」是一门通用的技术,大多数语言中都具备类似的库巴,

在 Python 中对应的是 re 模块,不过,正则表达式非常难于理解。一般情况下不建议使用。Python 中的 BeautifulSoup 和

Requests-HTML 非常适合通过标签进行内容提取。

模拟器

爬虫的设计者在设计爬虫的时候需要注意一个很难堪的现状:Web 端越来越 JS 化,手机端 key 值校验越来越复杂以致无法破解。这时候只能选择模拟器来完全假扮成用户了。

网页端常见的模拟浏览器工具有 Selenium,这是一个自动化测试工具,它可以控制浏览器作出点击,拖拉等动作,总之就是代替人来操作浏览器,通常搭配 PhantomJS 来使用。

PhantomJS 是一个基于WebKit的服务器端 JavaScript API,它基于 BSD开源协议发布。PhantomJS 无需浏览器的支持即可实现对 Web 的支持,且原生支持各种Web标准,如DOM 处理、JavaScript、CSS选择器、JSON、Canvas 和可缩放矢量图形SVG。不过目前好像已经停止维护啦。

不过还好,Selenium 同样可以操作 FireFox 和 Chrome 等浏览器。

除了 web 端,手机端 APP同样可以使用模拟器技术来完全模拟人的动作。

当需要并发的时候,我们手头上没有足够多的真机用来爬取,就要使用 genymotion 这样的虚拟机,使用起来跟 linux 虚拟机是一样的,下载安装包配置就可以了。

爬虫的并发和分布式

Python 作并发爬虫实际上毫无优势,不过如之前所讲,太高并发的爬虫对别人的服务器影响太大了,聪明的人不可能不作限制,所以高并发语言实际上优势也不大。Python 3.6 以后异步框架 Aiohttp 配合 async/await 语法也非常好用的,能在效率上提升不少。

总结

爬虫并不是一件特别简单得事情,但是要面临得困难也有很多。

要做好一个爬虫要注意事项有:

URL 的管理和调度。聪明的设计往往容错性很高,爬虫挂掉以后造成的损失会很小。

数据解析。多学点正则表达式总是好事情,心里不慌。

IP受限。解决方法可以借助代理IP

模拟器。这样做的效率有点低,而且电脑不能做其他事情。

原文地址:https://www.cnblogs.com/xiniudaili/p/10214497.html

时间: 2024-11-09 21:33:21

设计网路爬虫过程中需要注意的解析问题的相关文章

Python 爬虫过程中的中文乱码问题

python+mongodb 在爬虫的过程中,抓到一个中文字段,encode和decode都无法正确显示 注:以下print均是在mongodb中截图显示的,在pythonshell中可能会有所不同 比如中文 “余年”,假设其为变量a 1. print a 结果如下: 使用type查询之后,显示的确是unicode编码(正常情况下讲unicode编码内容直接存入mongodb中是可以正常显示的) 2. print type(a) 结果如下: 3. print a.encode('utf-8')

爬虫过程中如何有效的应对IP限制?

大数据时代,营销推广的主要依据就是大数据:根据大数据去抓取用户习惯,去抓取竞争对手的信息,却或许同类产品的相关资料等等.数据采集推动着数据分析,数据分析推动发展.但是在这个过程中会出现很多问题.拿最简单最基础的爬虫采集数据为例,过程中就会面临,IP被封,爬取受限.违法操作等多种问题,所以在爬去数据之前,一定要了解好预爬网站是否涉及违法操作,找到合适的代理IP访问网站等一系列问题. 我们都知道如果一个固定的IP在短暂的时间内,快速大量的访问一个网站,那自然会引起注意,管理员可以通过一些手段把这个I

解决下载ftp文件过程中,浏览器直接解析文件(txt,png等)的问题

搭建了一个ftp服务器,供用户进行上传下载,在下载过程中发现,一些文件,例如txt,jpg,png,pdf等直接被浏览器解析了.在浏览器中显示其内容,没有下载. 下面通过网上查询得到一些解决方法: 1:修改ftp目录下的.htacess文件,这个文件主要做一些类型映射,使各个文件类型映射为  octet-stream 类型,这样浏览器就不能解析了. 但是,我没有在ftp目录下发现该文件,通过filezilla连接服务器, filezilla>服务器>强制显示隐藏文件 ,也没有发现该文件.听说该

[记录]Python爬虫过程中遇到的简单带干扰线验证码处理方法

前言: 这些天,人力资源部有个需求:需要定期检查短信猫平台账号余额,于是乎,我向短信平台提交这个查询需求,对方给我答复是没办法.如此一来,只能看看能否通过用爬虫的方法去爬取后台数据了. 一.观察目标站点 使用开发者模式看了下目标站点,登陆是非常简单的三个选项:用户名,密码,验证码.验证码是由4位纯数字组成,每次通过get请求随机验证码的方法来刷新验证码.好了,观察到这,大致思路有了:get请求验证码图片,保存到本地进行识别,识别到的验证码加上用户名密码提交,去查询短信平台账号余额.到这里又有一个

学习爬虫过程中解决下载网页乱码的问题

这个问题肯定是字符的编码错乱导致的.网上也有很多解决方案.我看过的方案很多,最好的就是这个了. https://www.sohu.com/a/289375951_420744 原因文章说得很清楚,理论也讲得明白.解决方案我录在下面.版权归原作者. 方法一:直接指定res.encoding import requests url = "http://search.51job.com" res = requests.get(url) res.encoding = "gbk&quo

如何让客户明白在平面设计过程中需要提供资料的要求——企业标识篇

为在不同场合应用企业标识,同时达到最理想的宣传效果,背景板.线下宣传时将企业名称全称.简称.标识的各种不同应用.    此文档将规范介绍平面设计部分技术参数,以避免线下推广宣传过程因标识使用不规范,而影响企业视觉传达形象. 一.文件格式    文件格式将决定其清晰程度,平面设计过程中,文件格式大的分类分为二大类,即矢量文件和位图文件.    PSD.JPG.TIFF.PNG.BMP都属于位图文件,此类文件不支持放大,在使用过程中如果标识的使用超过了文件大小,将会使标识失真,影响视觉传达效果.AI

浏览器访问网页过程中发生了什么?

在浏览器输入:http://www.baidu.com/,最后,浏览器呈现出相应网页,这个过程究竟发生了什么? 第一步,解析域名,找到主机IP (1)浏览器会缓存DNS一段时间,一般2-30分钟不等.如果有缓存,直接返回IP,否则下一步. (2)缓存中无法找到IP,浏览器会进行一个系统调用,查询hosts文件.如果找到,直接返回IP,否则下一步.(在计算机本地目录etc下有一个hosts文件,hosts文件中保存有域名与IP的对应解析,通常也可以修改hosts科学上网或破解软件.) (3)进行了

浏览器访问网页过程中发生了什么?(转)

在浏览器输入:http://www.baidu.com/,最后,浏览器呈现出相应网页,这个过程究竟发生了什么? 第一步,解析域名,找到主机IP (1)浏览器会缓存DNS一段时间,一般2-30分钟不等.如果有缓存,直接返回IP,否则下一步. (2)缓存中无法找到IP,浏览器会进行一个系统调用,查询hosts文件.如果找到,直接返回IP,否则下一步.(在计算机本地目录etc下有一个hosts文件,hosts文件中保存有域名与IP的对应解析,通常也可以修改hosts科学上网或破解软件.) (3)进行了

爬虫实战【8】Selenium解析淘宝宝贝-获取多个页面

作为全民购物网站的淘宝是在学习爬虫过程中不可避免要打交道的一个网站,而是淘宝上的数据真的很多,只要我们指定关键字,将会出现成千上万条数据. 今天我们来讲一下如何从淘宝上获取某一类宝贝的信息,比如今天我们以"手机"作为关键词,举个例子. 分析页面的源代码 [插入图片,淘宝手机页面示意] 上面是搜索框,下面显示了很多宝贝信息,最下面是翻页的控制按钮. [插入图片,淘宝手机页面源代码] 我们看一下这个页面的源代码,发现都是一些js,还提示了要运行脚本才能显示. 难道宝贝也是Ajax加载的?我