端午节假期过了,之前一直在做出行准备,后面旅游完又休息了一下,最近才恢复状态。

端午假期最后一天收到一个快递,回去打开,发现是微信抽奖中的一本书,黄永祥的《实战Python网络爬虫》。

去各大网站搜了一下这个人,没有名气,去网购平台看了他别的书的书评,整体来说,书都是拼凑的。。。

但是既然书到手了,不妨翻开看看,刚好最近没有什么头绪,又偏头痛。花了几个半天整体翻了一下这本书,感觉是有点浅显的。

我之前用java写过爬虫,感觉比较难的还是反爬虫这块。这本书,我先看了第一个实战项目,51job的,运行了代码之后发现,哦,好吧,这个网站,貌似没有反爬虫机制?

其实具体的爬取内容的方法各个网站也是差不多的。主要还是反爬虫这块。但是书上内容不多,只有一个章节。

个人觉得,对于爬虫新手,看一看每章的小结,还是很能增长一些见识的。更深入的技术,大概这本书是不能提供的。

后续有时间,我大概会摘录一些小结放到这里来吧~虽然没什么人看这里。

网络爬虫

定义:自动抓取网络信息

分类

  • 通用网络爬虫/全网爬虫:主要为门户站点搜索引擎大型网站服务采集数据
  • 聚焦网络爬虫/主题网络爬虫:选择性地爬取主题相关的页面
  • 增量式网络爬虫:对已下载网页采取增量式更新/只爬取新产生或已经发生变化的网页
  • 深层网络爬虫:内容不能通过静态URL获取/隐藏在搜索表单后/只有用户提交一些关键词才能获得的页面

网站分析

  1. 找出数据来源:Doc、XHR、JS
  2. 找出数据所在请求,分析请求链接、请求方式、请求参数
  3. 确定参数来源:固定可选值、通过别的请求生成、经过JS处理、特殊值

抓包工具:Fiddler

爬虫库:

  • urllib
  • requests:语法简单,兼容python2和3
  • requests_html:提供了数据清洗、ajax数据动态渲染

爬虫缓存:requests_cache

requests_cache.install_cache(backend='memory')

存储机制

  • memory:每次程序运行都会将缓存以字典形式保存在内存中
  • sqlite:默认存储机制
  • redis:通过redis模块实现数据库的读写
  • mongo:通过pymongo模块实现数据库的读写

网页操控与数据爬取Selenium

手机App数据爬取Appium

验证码识别

  • 人工识别
  • ocr
  • 调用第三方平台API:在线人员、人工智能

数据清洗

  1. 字符串操作:截取、替换、查找、分割
  2. 正则表达式
  3. 第三方模块/库BeautifulSoup

分布式爬虫

并发库concurrent.futures:ThreadPoolExecutor和ProcessPoolExecutor

反爬虫技术

  1. 基于用户请求的Headers→固定属性+可变属性
  2. 基于用户操作网站的行为→代理IP
  3. 基于网站目录数据加载→模拟ajax请求
  4. 基于数据加密
  5. 基于验证码识别
  6. 基于请求参数
  7. 基于cookies→构建cookies池、代理IP、动态构建cookies、利用浏览器获取cookies

《实战Python网络爬虫》- 感想的更多相关文章

  1. 关于Python网络爬虫实战笔记③

    Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...

  2. 关于Python网络爬虫实战笔记①

    python网络爬虫项目实战笔记①如何下载韩寒的博客文章 python网络爬虫项目实战笔记①如何下载韩寒的博客文章 1. 打开韩寒博客列表页面 http://blog.sina.com.cn/s/ar ...

  3. 学习推荐《精通Python网络爬虫:核心技术、框架与项目实战》中文PDF+源代码

    随着大数据时代的到来,我们经常需要在海量数据的互联网环境中搜集一些特定的数据并对其进行分析,我们可以使用网络爬虫对这些特定的数据进行爬取,并对一些无关的数据进行过滤,将目标数据筛选出来.对特定的数据进 ...

  4. Python网络爬虫实战(一)快速入门

    本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...

  5. python网络爬虫实战之快速入门

    本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...

  6. 《精通Python网络爬虫》|百度网盘免费下载|Python爬虫实战

    <精通Python网络爬虫>|百度网盘免费下载|Python爬虫实战 提取码:7wr5 内容简介 为什么写这本书 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中.在搜索引 ...

  7. python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...

  8. python 网络爬虫全流程教学,从入门到实战(requests+bs4+存储文件)

    python 网络爬虫全流程教学,从入门到实战(requests+bs4+存储文件) requests是一个Python第三方库,用于向URL地址发起请求 bs4 全名 BeautifulSoup4, ...

  9. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

随机推荐

  1. Zookeeper发布订阅之SpringBoot+Mybatis多数据源

    1.前言 数据发布/订阅系统,即所谓的配置中心,顾名思义就是发布者将数据发布到Zookeeper的一个或一系列节点上,供订阅者进行数据订阅,进而达到动态获取数据的目的,实现配置信息的集中管理和数据的动 ...

  2. JS实现页面刷新方法

    下面介绍全页面刷新方法:有时候可能会用到 window.location.reload()刷新当前页面. parent.location.reload()刷新父亲对象(用于框架) opener.loc ...

  3. 大话Spark(1)-Spark概述与核心概念

    说到Spark就不得不提MapReduce/Hadoop, 当前越来越多的公司已经把大数据计算引擎从MapReduce升级到了Spark. 至于原因当然是MapReduce的一些局限性了, 我们一起先 ...

  4. Vue拖拽组件列表实现动态页面配置

    需求描述 最近在做一个后台系统,有一个功能产品需求是页面分为左右两部分,通过右边的组件列表来动态配置左边的页面视图,并且左边由组件拼装起来的视图,可以实现上下拖拽改变顺序,也可以删除. 根据这个需求我 ...

  5. HDU2874【LCA(模板)】

    第一题LCA,代码参考自:Ice_Crazy 思路: 这个最短路算法是想都别想了,可以看出这幅图就是树嘛,那么对于查询就是求树上两个结点最短距离. 这里就是利用LCA的tarjan离线算法. 算法的大 ...

  6. PV、UV、VV、IP是什么意思?

    PV.UV.VV.IP作为网站分析中最常见的基础指标,能够从宏观概括性地衡量网站的整体运营状况,也是检测网站运营是否正常的最直观的指标. 1.VV(来访次数/访问次数):VisitView 记录所有访 ...

  7. django导入导出excel实践

    一.xlrd和xlwt模块介绍 xlrd模块提供在任何平台上从excel电子表格(.xls和.xlsx)中提取数据的功能,xlwt模块提供生成与Microsoft Excel 95 到2003版本兼容 ...

  8. 怎么解决java.lang.NoClassDefFoundError错误

    http://blog.csdn.net/jamesjxin/article/details/46606307

  9. github最火的springboot开源学习资料

    https://github.com/JeffLi1993/springboot-learning-example https://github.com/ityouknow/spring-boot-e ...

  10. CentOS6.7上安装nginx1.8.0

    主题: CentOS6.7上安装nginx1.8.0 环境准备: 1.gcc-c++ 示例:yum install gcc-c++ 安装:gcc-c++ gcc-c++编译工具 2.PCRE(Perl ...