看到很多大牛在回答像“如何入门爬虫”这种问题的时候,一如当年学霸讲解题目,跳步无数,然后留下一句“不就是这样推嘛”,让一众小白菜鸟一脸懵逼。。作为一个0起步(之前连python都不会),目前总算掌握基础,开始向上进阶的菜鸟,深知其中的不易,所以我会在这个回答里,尽可能全面、细节地分享给大家从0学习爬虫的各种步骤,如果对你有帮助,请点赞~

首先!你要对爬虫有个明确的认识:

  • “所有网站皆可爬”:互联网的内容都是人写出来的,而且都是偷懒写出来的(不会第一页是a,下一页是8),所以肯定有规律,这就给人有了爬取的可能,可以说,天下没有不能爬的网站
  • “框架不变”:网站不同,但是原理都类似,大部分爬虫都是从 发送请求——获得页面——解析页面——下载内容——储存内容 这样的流程来进行,只是用的工具不同

在战术上重视:

  • 持之以恒,戒骄戒躁:对于初学入门,不可轻易自满,以为爬了一点内容就什么都会爬了,爬虫虽然是比较简单的技术,但是往深学也是没有止境的(比如搜索引擎等)!只有不断尝试,刻苦钻研才是王道!(为何有种小学作文即视感)

||
||
V

然后,你需要一个宏伟的目标,来让你有持续学习的动力(没有实操项目,真的很难有动力)

我要爬整个豆瓣!...
我要爬知乎各种妹子的联系方式*&^#%^$#

||
||
V

接着,你需要扪心自问一下,自己的python基本功吼不吼啊?

吼啊!——OK,开始欢快地学习爬虫吧 !
不吼?你还需要学习一个!赶紧回去看廖雪峰老师的教程,
2.7的。至少这些功能和语法你要有基本的掌握 :

  • list,dict:用来序列化你爬的东西
  • 切片:用来对爬取的内容进行分割,生成
  • 条件判断(if等):用来解决爬虫过程中哪些要哪些不要的问题
  • 循环和迭代(for while ):用来循环,重复爬虫动作
  • 文件读写操作(open,close等):用来读取参数、保存爬下来的内容等
  • 编码常识(codecs等):非常关键,爬虫写熟了以后遇到的各种古怪问题,很多来自于UTF-8 GBK等奇奇怪怪的编码!这个问题先做了解,后面调试时候再解决也不迟!

||
||
V

然后,你需要补充一下下面几个内容,作为你的知识储备:
(注:这里并非要求“掌握”,下面讲的两点,只需要先了解,然后通过具体项目来不断实践,直到熟练掌握)

1、网页的基本知识:

基本的HTML语言知识(知道href等大学计算机一级内容即可)
理解网站的发包和收包的概念(POST GET)
稍微一点点的js知识,用于理解动态网页(当然如果本身就懂当然更好啦)

2、一些分析语言,为接下来解析网页内容做准备

NO.1 正则表达式:扛把子技术,总得会最基础的:

NO.2 XPATH:高效的分析语言,表达清晰简单,掌握了以后基本可以不用正则
参考:XPath 教程

NO.3 Beautifulsoup:
美丽汤模块解析网页神器,一款神器,如果不用一些爬虫框架(如后文讲到的scrapy),配合request,urllib等模块(后面会详细讲),可以编写各种小巧精干的爬虫脚本
官网文档:Beautiful Soup 4.2.0 文档 参考案例:

||

||

V

接着,你需要一些高效的工具来辅助

(同样,这里先了解,到具体的项目的时候,再熟悉运用)

NO.1 F12 开发者工具:

  • 看源代码:快速定位元素
  • 分析xpath:1、此处建议谷歌系浏览器,可以在源码界面直接右键看

NO.2 抓包工具:

  • 推荐httpfox,火狐浏览器下的插件,比谷歌火狐系自带的F12工具都要好,可以方便查看网站收包发包的信息

NO.3 XPATH CHECKER (火狐插件):
非常不错的xpath测试工具,但是有几个坑,都是个人踩过的,,在此告诫大家:
1、xpath checker生成的是绝对路径,遇到一些动态生成的图标(常见的有列表翻页按钮等),飘忽不定的绝对路径很有可能造成错误,所以这里建议在真正分析的时候,只是作为参考
2、记得把如下图xpath框里的“x:”去掉,貌似这个是早期版本xpath的语法,目前已经和一些模块不兼容(比如scrapy),还是删去避免报错

NO.4 正则表达测试工具: 在线正则表达式测试 ,拿来多练练手,也辅助分析!里面有很多现成的正则表达式可以用,也可以进行参考!

||

||

V

ok!这些你都基本有一些了解了,现在开始进入抓取时间,上各种模块吧!python的火,很大原因就是各种好用的模块,这些模块是居家旅行爬网站常备的——

urllib
urllib2
requests

||

||

V

不想重复造轮子,有没有现成的框架?

华丽丽的scrapy(这块我会重点讲,我的最爱)

||

||

V

遇到动态页面怎么办?

selenium(会了这个配合scrapy无往不利,是居家旅行爬网站又一神器,下一版更新的时候会着重安利,因为这块貌似目前网上的教程还很少)
phantomJS(不显示网页的selenium)

||

||

V

遇到反爬虫策略验证码之类咋整?(不想折腾的直接第四个)

PIL
opencv
pybrain
打码平台

||
||
V

然后是数据库,这里我认为开始并不需要非常深入,在需要的时候再学习即可

mysql
mongodb
sqllite

||

||

V

爬来的东西怎么用?

numpy 数据分析,类似matlab的模块
pandas(基于numpy的数据分析模块,相信我,如果你不是专门搞TB级数据的,这个就够了)

||

||

V

进阶技术

多线程、分布式

———————————— 乱入的分割线 —————————————

然后学习编程关键的是学以致用,天天捧一本书看不如直接上手操练,下面我通过实际的例子来讲解爬虫——

比如最近,楼主在豆瓣上认识了一个很可爱的妹子,发现她一直会更新签名和日志,所以没事就会去她主页看看,但一直没有互相加好友(作为一只高冷的天蝎,怎么可以轻易加好友嘛!而且加了好友,你更新什么都会收到推送,那多没意思啊!一点神秘感都没有了!),可还是想及时获得妹子的最新动态,怎么办?

于是我就写了个70几行的python脚本,包含爬虫+邮件模块,跑在家里的一台闲置笔记本上,通过计划任务每准点抓取妹子的签名和最新文章一次,发送到我的邮箱。。嗯,其实是很简单的技术,,代码如下所示:

#-*-coding:utf-8-*- #编码声明,不要忘记!
import requests  #这里使用requests,小脚本用它最合适!
from lxml import html    #这里我们用lxml,也就是xpath的方法#豆瓣模拟登录,最简单的是cookie,会这个方法,80%的登录网站可以搞定
cookie = {} raw_cookies = ''#引号里面是你的cookie,用之前讲的抓包工具来获得for line in raw_cookies.split(';'):key,value = line.split("=", 1)cookie[key] = value #一些格式化操作,用来装载cookies#重点来了!用requests,装载cookies,请求网站
page = requests.get('#妹纸的豆瓣主页#',cookies=cookie)#对获取到的page格式化操作,方便后面用XPath来解析
tree = html.fromstring(page.text)#XPath解析,获得你要的文字段落!
intro_raw = tree.xpath('//span[@id="intro_display"]/text()')#简单的转码工作,这步根据需要可以省略
for i in intro_raw:intro = i.encode('utf-8')print intro #妹子的签名就显示在屏幕上啦#接下来就是装载邮件模块,因为与本问题关联不大就不赘述啦~

怎么样~是不是很简单~

从0-1入门python爬虫,看这篇就够了!相关推荐

  1. python爬虫数据提取_入门Python爬虫——提取数据篇

    原标题:入门Python爬虫--提取数据篇 作者: 李菲 来源:人工智能学习圈 前言 在提取数据这一环节,爬虫程序会将我们所需要的数据提取出来.在上一篇文章<入门Python爬虫 -- 解析数据 ...

  2. 学python重点是什么_如果只有1小时学Python,看这篇就够了

    大家好,我是大鹏,城市数据团联合发起人,致力于Python数据分析.数据可视化的应用与教学. 和很多同学接触过程中,我发现自学Python数据分析的一个难点是资料繁多,过于复杂.大部分网上的资料总是从 ...

  3. python教程是什么课文_新手快速入门Python必看这篇文章

    Python是一门多种用途的编程语言,时常在扮演脚本语言的角色.一般来说,Python可定义为面向对象语的脚本语言:这个定义把面向对象的支持和全面的面向脚本语言的角色融合在一起.事实上,人们往往以&q ...

  4. python6小时完全入门_如果只有1小时学Python,看这篇就够了,摸摸头发你还好吗!...

    和很多同学接触过程中,我发现自学Python数据分析的一个难点是资料繁多,过于复杂.大部分网上的资料总是从Python语法教起,夹杂着大量Python开发的知识点,花了很多时间却始终云里雾里,不知道哪 ...

  5. 自学python数据分析要多久-如果只有1小时学Python,看这篇就够了

    大家好,我是大鹏,城市数据团联合发起人,致力于Python数据分析.数据可视化的应用与教学. 和很多同学接触过程中,我发现自学Python数据分析的一个难点是资料繁多,过于复杂.大部分网上的资料总是从 ...

  6. python如何爬虫eps数据_入门Python爬虫 -- 解析数据篇

    元素).一般情况下,网页头部分会定义HTML文档的编码以及网页的标题.而网页体部分则决定着一个网页中的正文内容. # 一个最基本的HTML文档: # 网页头部分内容 # 定义文档编码 文档的标题 # ...

  7. 【Zookeeper实战】Zookeeper入门到实战看这篇就够了

    1. 前言 在上一篇[Zookeeper入门]相关概念总结 中已经完美的讲解了 Zookeeper入门 相关概念总结,接下来讲讲ZooKeeper 实战使用. 这篇文章简单给演示一下 ZooKeepe ...

  8. 入门 Webpack,看这篇就够了

    2018年8月25日更新,目前 webpack 已经更新值 4.17.1 ,本文所用到的各种库或多或少有些过时,跟着代码操作下来可能会遇到各种问题,不过 webpack 的主体思想没变,所以还是希望本 ...

  9. 入门Webpack,看这篇就够了

    阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段时间慢慢阅读本 ...

  10. 【Linux入门到精通系列讲解】shell脚本语法入门教程(看一篇就够了)

    文章目录 1 IF 2 IF-TEHN-ELSE 3 多步判断 4 FOR循环 5 WHILE循环 6 case语句 7 函数控制 1 IF #!/bin/bash #假如在/tep/abc文件夹 那 ...

最新文章

  1. 操作系统知识点:全面
  2. ecshop goods.php,重命名ecshop的商品页goods.php为shangpin.php
  3. 【转】RabbitMQ六种队列模式-2.工作队列模式
  4. redis java连接出错_redis连接错误与spring boot
  5. Eclipse的工作空间与项目
  6. flash cs4 打不开的解决方法(启动界面一闪而过)
  7. moviepy图片和文字合成视频
  8. 微信小程序数据库关于openId的坑
  9. 关于我玩单片机学习路线(个人总结)
  10. 去哪儿庄辰超:不信命运信概率
  11. 扩张的矩阵三要素——时间、空间和事件
  12. 第4节:alphapose项目运行和参数
  13. Win10耳机插上没反应,外放正常怎么解决?
  14. 行内元素和块元素的区别
  15. css元素旋转原点,使用transform-origin属性改变元素变换原点
  16. Alertmanager报警使用webhook飞秋通知
  17. 3904三极管是什么功能_学三极管能遇到这篇巧文,我太幸福了!
  18. SaaS-HRM(3)企业部门管理前后台
  19. UI设计界面设计培训班
  20. 苹果变心,这家公司没了360亿

热门文章

  1. 计算机网络class2(标准化工作及相关组织)
  2. sql关于视图的sql_学习SQL:SQL视图
  3. 音视频学习之 - H264解码
  4. 自己动手系列——实现一个简单的ArrayList
  5. 每天一个linux命令(55)--at命令
  6. 2015.12.20 自动化运维
  7. Extmail maildrop错误
  8. easyui 年份下拉框的构建
  9. struts2中的constant配置详解
  10. 记一次神奇的sql查询经历,group by慢查询优化(已解决)