如何入门 Python 爬虫?

Python016

如何入门 Python 爬虫?,第1张

零基础自学用Python 3开发网络爬虫(一)

http://blog.jobbole.com/77821/

零基础自学用Python 3开发网络爬虫(二): 用到的数据结构简介以及爬虫Ver1.0 alpha

http://blog.jobbole.com/77825/

零基础自学用Python 3开发网络爬虫(三): 伪装浏览器君

http://blog.jobbole.com/77830/

零基础自学用Python 3开发网络爬虫(四): 登录

http://blog.jobbole.com/77878/

然后还有一个比较有名的python爬虫框架 Scrapy

Scrapy 轻松定制网络爬虫

http://blog.jobbole.com/73115/

首先来说爬虫。

关于爬虫一个不太严谨的理解就是,你可以给爬虫程序设定一个初始的目标页面,然后程序返回目标页面的HTML文档后,从中提取页面中的超链接,然后继续爬到下一个页面中去。从这些页面的HTML文档中可以通过对标签的处理解析出你想要的具体内容。

所以我们可以这么来简单定义一个爬虫的工作过程:

抓取目标页面

解析页面文档获得目的信息

继续爬取下一个页面

存储结果

为了实现这些工作,你需要学习一些常用库的简单用法,包括但不限于:

urllib、urllib2、urllib.request、cookilib (Python的内置库,用来处理HTTP请求)

requests (第三方库,推荐使用requests来处理请求,比urllib方便一些)

re、beautifulsoup (正则表达式匹配内容、bs4解析html文档)

其次呢,因为你要跟网页的源码打交道,尤其是解析HTML文档,所以你最好对HTML和浏览器通信有点简单的了解,会使用Firebug查看源码定位信息在源码中的位置。

落实到题主给出的示例

http://www.zhihu.com/topic/19554091/questions?page=1

这是知乎数学话题全部问题的URL构成。可以看到我们只要修改最后的数字就可以访问到不同的页数。

数学话题下一共有1254页。所以你可以通过简单的对page做循环遍历获得所有问题。

(这种做法是直接构造了地址,或者你可以在爬取每一页以后从页面中得到下一页的链接,这样更像是一个爬虫)

《 Python for Informatics 》(中文翻译叫《信息管理专业Python教程》),这本书不仅是一本很好的Python爬虫方面的入门书,而且还有以这本书为教材的配套的Coursera课程。