位置: 编程技术 - 正文

深入理解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哪个好)

  • 账本印花税的计税依据
  • 进出口税则是什么意思
  • 小额支出没有发票怎么做账
  • 暂估成本没有发票
  • 一次性分红到期还本的会计分录
  • 预计销售收入增长是什么意思
  • 资产负债表上应付账款根据什么填制
  • 公允价值模式下,投资性房地产不计提折旧或摊销
  • 劳务费专票数量和单价要写吗
  • 公司打印银行回单和对账单
  • 公司注销时有大额应付款如何做账务处理合适?
  • 企业收到退回商品的会计分录
  • 没有建筑资质能办安全生产许可证吗
  • 固定资产领用材料进项税处理
  • 咨询费收入交什么税种
  • 利润借方余额表示盈利还是亏损
  • 预提工资的的计提依据
  • 团建费用是什么意思
  • 小规模纳税人附加税减半征收政策2023
  • 对子公司投资款要交税吗
  • 国际货运运费的计算基础
  • 在Win7中,鼠标非最大化
  • 手动滑屏怎么操作
  • 下花园6路公交车时间表
  • PHP:oci_statement_type()的用法_Oracle函数
  • 股权转让的条件和方式
  • sass转化为css
  • 新西兰南岛西南部
  • 最新windows11安装要求
  • 手把手带你做一件事
  • 现金折扣账务处理
  • 退货的会计处理分录
  • 工业企业应收应付会计怎样
  • 非营利组织能否开社保账户
  • 增值税发票超过一年未抵扣
  • java中的变量
  • 电子发票查询真伪
  • 个人独资企业计提的各种准备金支出不得扣除
  • 只要有销售收入就能赚钱
  • 企业缴纳耕地占补多少
  • 企业合并的流程
  • 现金付发票再摊销怎么算
  • 投资房地产的后续计量有哪几种模式
  • 补缴税款需要交滞纳金吗
  • 固定资产赠送后怎么做凭证
  • 销售收入小于销售成本
  • 电子承兑汇票做账看哪个日期
  • 坏账准备的会计分录例题
  • 教育行业会计科目表
  • 支付信息表
  • sql server 复制数据库具体操作图解
  • rtm平台全称
  • Windows Server 2008制作密码重设盘
  • mac快速关闭所有窗口
  • mac怎么隐藏桌面文件
  • macu盘安装windows
  • windows7桌面出现一个窗口删除不了
  • mac不用密码
  • win7系统打开浏览器后突然卡住了
  • ssh实现登录功能
  • 外国电影怎么看双语的
  • win10桌面是什么样的
  • linux bfs
  • django模块详解
  • Unity3d OnApplicationPause与OnApplicationFocus 判断游戏暂停还是重新启动
  • vue3.0diff
  • js修改地址栏参数但不让他跳转
  • android studio乱码怎么解决
  • 拨号器怎么用
  • python crc
  • javascript中var的作用
  • android开发框架
  • 苏州税务中心
  • 西安车辆购置税在线交费
  • 青岛电子税务局电话人工客服电话
  • 工会经费收支办法2022新政策
  • 江苏发票认证平台app
  • 税控盘在哪领取
  • 2010年末实现净利润390万,宣告发放现金股利40万,在计算本年未分配利润时,是否要减掉这40万?
  • 国家税务总局2011年34号公告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设