Python 语言
大部分人学 Python 都是作为第二语言来学的, 所以既然已经有了其它语言的基础, 我就推荐 2 个小而美的教程, 百页左右, 不啰嗦
先看完这 2 个教程其一, 就可以开始写 Python 了... 遇到不明确的地方再去详细了解, 比如 generator
, yield
等
HTML & CSS & JS
w3school 是入门基础, 要用爬虫获取数据, 必须先了解 HTML 的结构
爬虫
网站爬虫的大体思路是 :
- 模拟网站登录请求
- 网络请求获取网页源代码
- CSS selector 或 xpath 选定需要的元素, 获取内容属性等
- 结构化数据并存储到数据库
- 定时,并发执行爬虫
- 关于 iOS 的爬虫, 可以参考我之前的文章 iOS 抓取 HTML ,CSS XPath 解析数据
Python 爬虫
要写一个爬虫, 可以用一些基本的库, 也可以用爬虫框架 :
基本库
- Beautiful Soup : 从 HTML 获取指定的节点及数据
- Requests: HTTP for Humans : 网络请求库
最核心的就是这 2 个模块, 其它的数据存储, 定时任务, 多线程等都是锦上添花
不错的教程
Python爬虫利器一之Requests库的用法
Python爬虫利器二之Beautiful Soup的用法
Scrapy笔记11- 模拟登录
Scrapy随机更换User-Agent和实现IP代理池
爬虫框架
由于公司原因, 我接触的是 Scrapy
Scrapy 是一个相对成熟的框架, 多线程, 并发数, 中间件, 超时, 自定义 header, UA, 数据库存储, Log, 部署 等等都有成熟的解决方案和示例, 这也是我选择使用它的原因.
不错的教程
scrapy爬虫框架教程(一)-- Scrapy入门
利用Scrapy爬取所有知乎用户详细信息并存至MongoDB(附视频和源码)
部署
在 Scrapy 官网 可以看到, 官方的部署指南,
- scrapy/scrapyd 用来本地部署
- Scrapinghub Platform 是一个类似 Heroku 的云平台, 专门部署 Scrapy 爬虫
动态页面
- 有些页面的数据是 JS 动态加载的, 比如懒加载图片, 滚动加载更多等
- 此时, 我们直接发送网络请求获取到的页面, 并没有执行 JS 代码, 所以懒加载的元素都尚为加载出来, 我们需要下面 2 个库.
- Python 代码控制 PhantomJS 加载页面, 然后 Selenium 模拟用户点击, 滚动屏幕, 触发网页中的 AJAX 加载更多内容的请求, 等元素都加载完全, 再爬取数据
Selenium : web的自动测试工具, 模拟点击按钮, 滚动页面等
PhantomJS : 没有界面的浏览器
其它
1. 又或者, 你学习爬虫只是想快捷的抓取数据, 你可以尝试下面的软件(网站), 可以不用写代码, 可视化的编写抓取数据的任务
2. 如果你没有自己的服务器, VPS , 可以使用
mLab : 云 MongoDB 服务
Ref
最后
文章是我爬取 V2EX 的学习整理
我的 V2 爬虫 : V2EX_Crawler