如何从零基础开始写一个关于搜索知乎答案的python爬虫

Python019

如何从零基础开始写一个关于搜索知乎答案的python爬虫,第1张

首先来说爬虫

关于爬虫一个不太严谨的理解就是,你可以给爬虫程序设定一个初始的目标页面,然后程序返回目标页面的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做循环遍历获得所有问题。

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

用爬虫跟踪下一页的方法是自己模拟点击下一页连接,然后发出新的请求;

参考例子如下:

item1 = Item()

yield item1

item2 = Item()

yield item2

req = Request(url='下一页的链接', callback=self.parse)

yield req

注意:使用yield时不要用return语句。

网络爬虫只能根据你指定的url爬取网页的html代码,至于你想要包含指定内容的网页的话,只能先爬取下来网页,然后在对页面内容进行匹配(正则,也有开源工具)找到你想要的内容就可以了!顺便说一句网络爬虫不能根据关键字来爬取网页!