位置: 编程技术 - 正文

深入理解Python分布式爬虫原理(python的理解)

编辑:rootadmin

推荐整理分享深入理解Python分布式爬虫原理(python的理解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:怎么理解python,深入理解python特性 pdf,python总结与分析,深入理解python特性 pdf,深入理解python特性 pdf,python总结与分析,python的理解,深入理解python特性 pdf,内容如对您有帮助,希望把文章链接给更多的朋友!

首先,我们先来看看,如果是人正常的行为,是如何获取网页内容的。

(1)打开浏览器,输入URL,打开源网页

(2)选取我们想要的内容,包括标题,作者,摘要,正文等信息

(3)存储到硬盘中

上面的三个过程,映射到技术层面上,其实就是:网络请求,抓取结构化数据,数据存储。

我们使用Python写一个简单的程序,实现上面的简单抓取功能。

看着很简单,是的,它就是一个爬虫入门的基础程序。当然,在实现一个采集过程,无非就是上面的几个基础步骤。但是实现一个强大的采集过程,你会遇到下面的问题:

(1)需要带着cookie信息访问,比如大多数的社交化软件,基本上都是需要用户登录之后,才能看到有价值的东西,其实很简单,我们可以使用Python提供的cookielib模块,实现每次访问都带着源网站给的cookie信息去访问,这样只要我们成功模拟了登录,爬虫处于登录状态,那么我们就可以采集到登录用户看到的一切信息了。下面是使用cookie对httpRequest()方法的修改:

(2)编码问题。网站目前最多的两种编码:utf-8,或者gbk,当我们采集回来源网站编码和我们数据库存储的编码不一致时,比如,.com的编码使用的是gbk,而我们需要存储的是utf-8编码的数据,那么我们可以使用Python中提供的encode()和decode()方法进行转换,比如:

深入理解Python分布式爬虫原理(python的理解)

中间出现了unicode编码,我们需要转为中间编码unicode,才能向gbk或者utf-8转换。

(3)网页中标签不完整,比如有些源代码中出现了起始标签,但没有结束标签,HTML标签不完整,就会影响我们抓取结构化数据,我们可以通过Python的BeautifulSoup模块,先对源代码进行清洗,再分析获取内容。

(4)某些网站使用JS来生存网页内容。当我们直接查看源代码的时候,发现是一堆让人头疼的JS代码。可以使用mozilla、webkit等可以解析浏览器的工具包解析js、ajax,虽然速度会稍微慢点。

(5)图片是flash形式存在的。当图片中的内容是文字或者数字组成的字符,那这个就比较好办,我们只要利用ocr技术,就能实现自动识别了,但是如果是flash链接,我们将整个URL存储起来了。

(6)一个网页出现多个网页结构的情况,这样我们如果只是一套抓取规则,那肯定不行,所以需要配置多套模拟进行协助配合抓取。

(7)应对源网站的监控。抓取别人的东西,毕竟是不太好的事情,所以一般网站都会有针对爬虫禁止访问的限制。一个好的采集系统,应该是,不管我们的目标数据在何处,只要是用户能够看到的,我们都能采集回来。所见即所得的无阻拦式采集,无论是否需要登录的数据都能够顺利采集。大部分有价值的信息,一般都需要登录才能看到,比如社交网站,为了应对登录的网站要有模拟用户登录的爬虫系统,才能正常获取数据。不过社会化网站都希望自己形成一个闭环,不愿意把数据放到站外,这种系统也不会像新闻等内容那么开放的让人获取。这些社会化网站大部分会采取一些限制防止机器人爬虫系统爬取数据,一般一个账号爬取不了多久就会被检测出来被禁止访问了。那是不是我们就不能爬取这些网站的数据呢?肯定不是这样的,只要社会化网站不关闭网页访问,正常人能够访问的数据,我们也能访问。说到底就是模拟人的正常行为操作,专业一点叫“反监控”。

源网站一般会有下面几种限制:

1、一定时间内单个IP访问次数,一个正常用户访问网站,除非是随意的点着玩,否则不会在一段持续时间内过快访问一个网站,持续时间也不会太长。这个问题好办,我们可以采用大量不规则代理IP形成一个代理池,随机从代理池中选择代理,模拟访问。代理IP有两种,透明代理和匿名代理。

2、一定时间内单个账号访问次数,如果一个人一天小时都在访问一个数据接口,而且速度非常快,那就有可能是机器人了。我们可以采用大量行为正常的账号,行为正常就是普通人怎么在社交网站上操作,并且单位时间内,访问URL数目尽量减少,可以在每次访问中间间隔一段时间,这个时间间隔可以是一个随机值,即每次访问完一个URL,随机随眠一段时间,再接着访问下一个URL。

如果能把账号和IP的访问策略控制好了,基本就没什么问题了。当然对方网站也会有运维会调整策略,敌我双方的一场较量,爬虫必须要能感知到对方的反监控将会对我们有影响,通知管理员及时处理。其实最理想的是能够通过机器学习,智能的实现反监控对抗,实现不间断地抓取。

下面是本人近期正在设计的一个分布式爬虫架构图,如图1所示:

纯属拙作,初步思路正在实现,正在搭建服务器和客户端之间的通信,主要使用了Python的Socket模块实现服务器端和客户端的通信。如果有兴趣,可以单独和我联系,共同探讨完成更优的方案。

标签: python的理解

本文链接地址:https://www.jiuchutong.com/biancheng/375421.html 转载请保留说明!

上一篇:Python实现希尔排序算法的原理与用法实例分析(希尔排序数据结构的代码)

下一篇:Python 和 JS 有哪些相同之处(python和js哪个好)

  • 增值税发票开票软件金税盘
  • 盈余公积转增资本会影响所有者权益吗
  • 缴纳工会经费会计处理
  • 所得税流程
  • 报销费用明细和发票
  • 公司转让住房是什么意思
  • 税收返还怎么做会计分录
  • 以前购买的固定资产现在入账
  • 财产租赁所得应缴纳个人所得税
  • 委托贷款利息收入账务处理
  • 企业事故赔偿支出可以抵税吗
  • 非营利组织对外捐赠
  • 含税金额怎么计算
  • 工会筹备金交给谁
  • 水利建设基金的缴费基数是什么
  • 注销往来怎么清理
  • 客户忠诚度的表现行为有哪些
  • 总资产报酬率
  • 五联折叠票和两联折叠票的区别
  • 预缴增值税抵扣销项税额账务处理
  • 财务红冲是什么意思
  • 原材料暂估入账产生的差异如何处理
  • win10wifi老是自动断开怎么回事
  • win10怎么找应用程序
  • 项目优化管理工具
  • 折旧提取后资金如何处理
  • 湿地上有什么植物
  • vue引入高德地图绘制多边形,编辑多边形
  • 房地产企业以房产对外投资需要交什么税
  • 黄喉蜂虎鸟是保护动物吗
  • php数组按照某个字段排序
  • 汇算清缴补充公告
  • 工会经费计入什么费用明细科目
  • qrcode.min.js
  • 其他收益会计科目怎么写
  • gp_dump命令
  • sscom命令
  • 出售子公司股权不丧失控制权
  • 工伤保险赔偿范围和企业承担范围
  • 资本化的后续支出
  • 进口消费税如何计税
  • js闭包示例
  • 汽修厂利润能达到一半吗
  • 管理费用主要核算内容包括什么?
  • 详解中国航天三垂一远
  • 原始凭证的种类划分
  • 销售公司的主营业务成本怎么算
  • 通行费抵扣进项税怎么做账
  • 分公司可以在银行贴现吗
  • 企业净利润怎么查询数据
  • 发票冲红重开,重开时是按新税率还是旧税率?
  • 驾驶员培训费纳税吗
  • 城市维护建设税属于中央还是地方
  • 质量不合格怎么说
  • 怎么去银行买承兑
  • 本月没有认证的进项税怎么做分录
  • 快递做账用什么软件
  • 本年负数去年正数如何算同比
  • 工会经费征收项目是什么
  • 企业有外币账户怎样做账
  • 固定资产改变用途折旧处理
  • sql-3
  • 腾讯云 阿里云 营收对比
  • ubuntu x
  • mac如何设置默认打开程序
  • groove音乐怎么添加本地音乐
  • 蓝屏代码bad_system_config_info
  • linux系统软件包安装
  • realshed.exe - realshed是什么进程 有什么用
  • win10一年更新几次
  • win7系统运行卡怎么办
  • find命令支持哪些查找方式
  • js能实现的简单效果
  • [Phonegap+Sencha Touch] 移动开发50 Android修改新建虚拟机存放的位置
  • javascript如何学
  • python怎么定义
  • 房产原值包括哪些内容
  • 电子税务局怎么添加开票员
  • 公司地址变更后社保要改吗
  • 充值卡和预付卡区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设