Python爬虫系列 - Go语言中文社区

Python爬虫系列


Python爬虫系列

背景

由于近来学(lan)业(ai)繁(fa)忙(zuo),快一个月没有更新博客了。这周完成了两门课的结课考试,现下时间开始变得充裕。准备梳理一下前段时间学习的关于Python爬虫的内容,权当复习巩固知识。而初次学习时遇到的疑难杂症,那时候的应对策略是抓大放下,在这梳理过程会下定决心一一攻克。
由于本人技术有限,错漏处还望各友不吝赐教。

梳理知识点

  1. python2:urllib2爬虫
  2. python3:Requests爬虫
  3. xpath的使用
  4. Tesseract的使用
  5. Selenium与PhantomJS
  6. scrapy下载图片实例
  7. scrapy 模拟登陆
  8. scrapy数据写入MySOL, MongoDB
  9. scrapy-redis使用

说明: 需要梳理的知识点,大致为这些,等全部写完后会做成链接实现跳转,并且根据实际情况目录会有相应的调整。


更新:018.11.19

爬虫总结

什么是爬虫?对应英文单词spider,一个形象说法。用大白话释义:从网上批量获取数据的程序。当前我们常用的百度,其实就是一个大型爬虫,它没日没夜爬取别人网站上的数据,然后解析入库,当你在搜索框键入文字敲下回车之后,百度按照一定的算法从自家数据库找出对应的内容给你看。当然,呈现结果的前几条一定会是金主的广告。

所以爬虫应该包括:请求数据—>解析数据—>录入数据。三个阶段,与我系列内容有以下映射关系:

请求数据:urllib2(1)| urllib2(2)| requests

解析数据:xpath | BeautifulSoup | 正则表达式 | Python爬虫-PyQuery

录入数据:MySQL | MongoDB | Redis

但肆无忌惮的爬虫可能引发网站服务器宕机,因此出现反爬机制。对动态渲染的网页,或是需要滑块验证,我们可以考虑使用自动化工具Selenium:Selenium(1) | Selenium(2) | Selenium(3)

身处信息爆炸时代,获取数据的时机也很重要,可以说是越快越好,所以有了速度篇:速度(1) | 速度(2) | 速度(3) (但我强烈建议还是别太快)

每篇对应了一个实战案例,可谓十分良心[ 不要脸.jpg ]。而基于上述内容,于是有了《小黑的六一专属礼物》(爬取头条街拍)《二进制记得》(爬取QQ空间留言)《Python下载会员歌曲》(下载QQ音乐付费歌曲)《知乎登陆》(模拟知乎登陆)《说电影<悲伤逆流成河>》(爬取猫眼影评)《千人成像》(爬取花瓣网),事实上这些只是公众号上发出来的,更多可以看看我GitHub(youguanxinqing)。尽管时间间隔越久的代码,越多缺点,但都是我一步步来时留下的印记。
说明:这些内容大部分CSDN上有,个别只在公众号上更新。

关于反爬虫

你可以关注以下几点:

(1)User-Agent:你可以考虑Python的flake-agent包,尽管有的网站不仅限UA,所以关注headers中的其他字段很有必要。

(2)速度:尽可能让你的爬虫速度适中。

(3)Selenium:这个自动化工具可以让你的程序更像是人在操作,重点是用起来还简单,算得上个人爬虫的终极武器。

(4)IP代理:当你的爬虫程序需要短时间内获取数据,可以考虑付费IP。事实上许多商业爬虫,都用到了IP代理。

(5)验证码:不是所有验证码都可以用简单的程序破解,所以你不得不使用一些打码平台。

关于获取数据

(1)如果可以,一定要从json中提取数据;从html中解析数据应该是下下策。

(2)如果web获取数据太难,你应该考虑移动端。

(3)一些需要登陆才能获取数据的网站,或者是有些数据需要登陆网站才能获取,常规登陆不好使,selenium实现也太难,你应该考虑“扫描二维码登陆”的接口。但还有一个下下策是:拷贝浏览器中的cookies。

关于学习:

(1)视频:事实上只要你稍微用点心,免费获取各大培训公司的教学视频是很容易的。我比较建议入门考虑黑马传智,但老男孩讲的内容会更全面。

(2)书籍:强推崔庆才的《Python3 网络爬虫开发实战》。起初我看到许多公众号推荐,还以为是商业互吹的日常操作,直到我在坊间得到盗版……咳咳,反正良心书。《精通Python爬虫框架Scrapy》《Python网络数据采集》二书建议有一定基础之后再看,重点关注老外写代码的思想。主要是书上有些示例是国外url,除非你会科学上网……

关于工具:

(1)我不建议使用百度,谷歌会更好,但国内如何使用谷歌搜索,别问我,我不知道!

(2)记笔记你应该考虑markdown相关工具。我用的是马克飞象+印象笔记。当然,我都开了年会。印象笔记更是直接开了三年,因为我真心害怕它会倒闭,我那么多笔记怎么办?所以多给他一些钱。其他如有道云笔记,为知笔记,微软的OneNote,我并不能用得习惯。
在这里插入图片描述

(3)你应该尝试也去努力习惯linux下编程。这是我从linux编程到windows编程,现在又回到linux的心得。


以上是我此时此刻能想到的一切。

关于计划

事实上计划中的一些内容并没有写在这个系列中,比如后来发现Tsseract不会太好用,Scrapy框架想单独出一个系列。后来因为公司宿舍网不好,写爬虫有碍体验,或许会让Scrapy无限期延后。

而“Selenium与PhantomJS”改成了chrome driver,是因为Python不再愿意支持PhantomJS,若是你一定要用,解释器会提示warning。

事实上Python2中的urllib2在Python3依然存在,只是挪到了urllib中,常用包括:urllib.request,urllib.parse,urllib.error。只是那时候我还不知道,因选择从Python2做了系列的起点。

之后打算写一个数据可视化系列。继续充电吧!

一些感想

爬虫有帮助到我许多。

比如暑假实训,写微信小程序的时候需要做一个“一句一图”的功能,于是爬了《ONE》;当浏览器不知何故不能访问学校教务处,不能查询自己的成绩,于是写了获取成绩的爬虫;因为白天在公司聊QQ,任务没有做完,而需要的数据又在公司的服务器上,只能在公司访问,便写了一个爬虫把需要的数据全部装进mongo,带上笔记本愉快回家……

想起高中酷爱逛豆瓣,每个周末回家都会手动复制一些文章到word中,再传到手机里带回学校看,如果那时我知道爬虫的话……

想起14年让朋友帮忙截图记录《一个》上的文章,如果那时候我会爬虫的话……

如果就此可以以小见大的话,我好想武断地说:编程是一项多么多么有趣的事呀!

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_41359051/article/details/80371237
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢