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课程。