知乎的一个讲python的专栏,其中爬虫的几篇文章,偏入门解释,快速看了一遍。

入门

爬虫基本原理:用最简单的代码抓取最基础的网页,展现爬虫的最基本思想,让读者知道爬虫其实是一件非常简单的事情。

爬虫代码改进:这部分是一系列文章,从程序设计的角度来讲,是爬虫中要掌握的基本代码设计思路。主要从两方面对之前代码进行改进:一个是代码设计的角度,让读者习惯于定义函数、使用生成器等;第二是展现多页抓取、抓取二级页面的代码逻辑。

爬虫相关库的安装:讲述本专题将会使用到的所有库的安装方法,有的简单,有的会有些复杂。这篇文章主要帮助读者扫除学习过程中不必要的障碍。

学完这三部分,读者就可以自由抓取数据量不大、又没有反爬机制的网站了(其实这种网站还是非常多的)。

网页解析与数据存储

python中提供了很多网页解析方法;同时,根据不同的需求可能要存储成不同文件格式或数据库,所以这一部分将二者合起来讲。每一部分一篇理论,一篇实战;每一部分使用一个解析库,存储为一种文件格式。

注:这些解析方法是彼此替代的关系(虽然各有优劣),基本上只要掌握一种就可以了,而文件存储最好全部掌握。

beautifulsoup详解:这篇文章全面讲解beautifulsoup解析库的使用

bs4+json抓取实战:json介绍、抓取stackoverflow中python最新问题数据存储到json文件

xpath详解:这篇文章全面讲解xpath解析语法的使用

xpath+mongodb抓取实战:抓取伯乐在线python爬虫页面数据存储到mongodb数据库

pyquery详解:这篇文章全面讲解css解析语法的使用

pyquery+mysql抓取实战:抓取赶集网小狗数据存储到mysql

正则表达式+csv/txt抓取实战:正则表达式网上教程非常多,这里对使用方法就不赘述了,只是提供正则用于网页抓取的方法。这里抓取豆瓣top250中相对比较难整理的数据。

selenium详解:这篇文章全面讲解beautifulsoup解析库的使用

selenium抓取实战:抓取新浪微博数据

各种网页解析库的对比

到这里就把流行的网页解析库和数据存储方式讲了一个遍,掌握这些之后,网页解析和数据存储都难不倒你了,你就可以专心攻克各种反爬虫机制了。

友情提醒:对于没有时间的同学来说,这部分其实都可以不用系统地学,先行略过,看一些反爬措施,等到遇到问题,再把文章当文档一样查就可以了,不过事先学过的话,写代码会很得心应手。

积累经验

在实际操作过程中,我们会遇到一些阻碍,比如限制headers、登录验证、限制ip、动态加载等反爬手段,还有爬app,get/post请求等等。

这些都是一个一个的小问题,在有了之前基础的前提下,解决这些问题应该不是难事。这个过程最重要的就是积累,多爬多掉坑,经验自然就丰富了。

这部分就以每一篇文章解决一个问题的形式来讲,考虑到本人水平有限,肯定不能覆盖所有的坑,尽量填吧!

一些简单的反爬虫技巧:包括UA设置及技巧,cookies设置,延迟等最基本的反爬手段

使用代理:抓取页面非常多的时候,我们的ip地址会被封掉,所以就可以使用代理来不断更换ip

ajax动态加载网页的抓取

看完上面这三篇文章,多数的网页都可以自由抓取了,反爬技巧可以先看到这里,先去学scrapy框架,使日常的爬虫变得更方便,如果有其他网页涉及到其他反爬手段现查就可以了。

抓包介绍

网页状态码解析

post请求

抓取app数据

requests深入介绍

scrapy爬虫框架系列:这个系列会再重新从scrapy的安装,基本概念开始讲起,逐渐深入讲解。

python爬虫专栏学习的更多相关文章

  1. Python爬虫系统化学习(2)

    Python爬虫系统学习(2) 动态网页爬取 当网页使用Javascript时候,很多内容不会出现在HTML源代码中,所以爬取静态页面的技术可能无法使用.因此我们需要用动态网页抓取的两种技术:通过浏览 ...

  2. Python爬虫系统学习(1)

    Python爬虫系统化学习(1) 前言:爬虫的学习对生活中很多事情都很有帮助,比如买房的时候爬取房价,爬取影评之类的,学习爬虫也是在提升对Python的掌握,所以我准备用2-3周的晚上时间,提升自己对 ...

  3. Python爬虫系统化学习(4)

    Python爬虫系统化学习(4) 在之前的学习过程中,我们学习了如何爬取页面,对页面进行解析并且提取我们需要的数据. 在通过解析得到我们想要的数据后,最重要的步骤就是保存数据. 一般的数据存储方式有两 ...

  4. Python爬虫系统化学习(5)

    Python爬虫系统化学习(5) 多线程爬虫,在之前的网络编程中,我学习过多线程socket进行单服务器对多客户端的连接,通过使用多线程编程,可以大大提升爬虫的效率. Python多线程爬虫主要由三部 ...

  5. 一个Python爬虫工程师学习养成记

    大数据的时代,网络爬虫已经成为了获取数据的一个重要手段. 但要学习好爬虫并没有那么简单.首先知识点和方向实在是太多了,它关系到了计算机网络.编程基础.前端开发.后端开发.App 开发与逆向.网络安全. ...

  6. Python爬虫的学习经历

    在准备学习人工智能之前呢,我看了一下大体的学习纲领.发现排在前面的是PYTHON的基础知识和爬虫相关的知识,再者就是相关的数学算法与金融分析.不过想来也是,如果想进行大量的数据运算与分析,宏大的基础数 ...

  7. python爬虫scrapy学习之篇二

    继上篇<python之urllib2简单解析HTML页面>之后学习使用Python比较有名的爬虫scrapy.网上搜到两篇相应的文档,一篇是较早版本的中文文档Scrapy 0.24 文档, ...

  8. 【Python爬虫案例学习】下载某图片网站的所有图集

    前言 其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup. 其实就几行代码,但希望没有开发基础的人也能一下子看明白,所以大神请绕行. 基本环境配置 python 版本:2.7 ...

  9. Python爬虫系统化学习(3)

    一般来说当我们爬取网页的整个源代码后,是需要对网页进行解析的. 正常的解析方法有三种 ①:正则匹配解析 ②:BeatuifulSoup解析 ③:lxml解析 正则匹配解析: 在之前的学习中,我们学习过 ...

随机推荐

  1. 解决gitosis中authorized_keys不自动更新问题

    1.拷贝一个管理员权限用户的id_rsa.pub到服务器端 这里我拷贝的是yang电脑的key,命令如下: scp  /home/yang/.ssh/id_rsa.pub serveradmin@服务 ...

  2. 前端福利之改变placeholder颜色的方法(转)

    之前拿到一个设计图,Placeholder是白色的,所以就查看了一下改变placeholder的方法: input::-webkit-input-placeholder { /* WebKit bro ...

  3. CodeForces 289B Polo the Penguin and Matrix (数学,中位数)

    题意:给定 n * m 个数,然后每次只能把其中一个数减少d, 问你能不能最后所有的数相等. 析:很简单么,首先这个矩阵没什么用,用一维的存,然后找那个中位数即可,如果所有的数减去中位数,都能整除d, ...

  4. .NET基础 (06)面向对象的实现

    面向对象的实现1 C#中类可以有多个父类.可以实现多个接口吗2 简述C#中重写.重载和隐藏的概念3 为什么在构造方法中调用虚方法会导致问题4 在C#中如何声明一个类不能被继承 面向对象的实现 1 C# ...

  5. 设计模式21:State 状态模式(行为型模式)

    State 状态模式(行为型模式) 动机(Motivation) 在软件构建过程中,某些对象的状态如果改变,其行为也会随之而发生变化,比如文档处于只读状态,其支持的行为和读写状态的行为就可能完全不同. ...

  6. js基础巩固练习

    ---恢复内容开始--- 今天讲了js的基础知识 js的组成3部分1 ECMAscript  核心  2 DOM 文本对象模型   3BOM  浏览器模型 js 的引入方式三种 1 在body里作为标 ...

  7. 20160214 2016-2017-2 实验二《Java面向对象》实验报告

    实验二 面向对象程序设计 (一)单元测试 写一段关于分数标准的代码,如下: public class MyUtil{ public static String percentage2fivegrade ...

  8. chattr命令锁定账户敏感文件

    有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux ...

  9. laravel中使用mgirations创建和迁移数据库

    使用php artisan make:migration create_links_table命令 编辑2016_04_11_095342_create_links_table public func ...

  10. 从源代码分析DbSet如何通过ObjectStateManager管理entity lifecycle的生命周期

    一:Savechange的时候,怎么知道哪些entity被add,modify,delete,unchange ???? 如何来辨别... 在entity中打上标记来做表示...已经被跟踪了...当每 ...