Python实现爬取知乎神回复简单爬虫代码分享


Posted in Python onJanuary 04, 2015

看知乎的时候发现了一个 “如何正确地吐槽” 收藏夹,里面的一些神回复实在很搞笑,但是一页一页地看又有点麻烦,而且每次都要打开网页,于是想如果全部爬下来到一个文件里面,是不是看起来很爽,并且随时可以看到全部的,于是就开始动手了。

工具

1.Python 2.7
2.BeautifulSoup

分析网页

我们先来看看知乎上该网页的情况

网址:Python实现爬取知乎神回复简单爬虫代码分享,容易看到,网址是有规律的,page慢慢递增,这样就能够实现全部爬取了。

再来看一下我们要爬取的内容:

Python实现爬取知乎神回复简单爬虫代码分享我们要爬取两个内容:问题和回答,回答仅限于显示了全部内容的回答,如下面这种就不能爬取,因为好像无法展开(反正我不会。。),再说答案不全的话爬来也没用,所以就不爬答案不全的了吧。

Python实现爬取知乎神回复简单爬虫代码分享

好,那么下面我们要找到他们在网页源代码中的位置:

Python实现爬取知乎神回复简单爬虫代码分享即我们找到问题的内容包含在<h2 class = "zm-item-title"><a tar...>中,那么我们等会就可以在这个标签里面找问题。

然后是回复:

Python实现爬取知乎神回复简单爬虫代码分享有两个地方都有回复的内容,因为上面那个的内容还包括了<span..>等一些内容,不方便处理,我们爬下面那个的内容,因为那个里面的内容纯正无污染。

代码

好,这时候我们试着写出python代码:

# -*- coding: cp936 -*-

import urllib2

from BeautifulSoup import BeautifulSoup
f = open('howtoTucao.txt','w')     #打开文件
for pagenum in range(1,21):        #从第1页爬到第20页
    strpagenum = str(pagenum)      #页数的str表示

    print "Getting data for Page " + strpagenum   #shell里面显示的,表示已爬到多少页

    url = "http://www.zhihu.com/collection/27109279?page="+strpagenum  #网址

    page = urllib2.urlopen(url)     #打开网页

    soup = BeautifulSoup(page)      #用BeautifulSoup解析网页

    

    #找到具有class属性为下面两个的所有Tag

    ALL = soup.findAll(attrs = {'class' : ['zm-item-title','zh-summary summary clearfix'] })
    for each in ALL :               #枚举所有的问题和回答

        #print type(each.string)

        #print each.name

        if each.name == 'h2' :      #如果Tag为h2类型,说明是问题

            print each.a.string     #问题中还有一个<a..>,所以要each.a.string取出内容

            if each.a.string:       #如果非空,才能写入

                f.write(each.a.string)

            else :                  #否则写"No Answer"

                f.write("No Answer")

        else :                      #如果是回答,同样写入

            print each.string

            if each.string: 

                f.write(each.string)

            else :

                f.write("No Answer")

f.close()                           #关闭文件

代码虽然不常,可是写了我半天,开始各种出问题。

运行

然后我们运行就可以爬了:

Python实现爬取知乎神回复简单爬虫代码分享结果

等运行完毕,我们打开文件howtoTucao.txt,可以看到,这样就爬取成功了。只是格式可能还是有点问题,原来是我No Answer没加换行,所以No Answer还会混到文本里面去,加两个换行就可以了。

Python实现爬取知乎神回复简单爬虫代码分享

Python 相关文章推荐
python执行外部程序的常用方法小结
Mar 21 Python
Python pickle模块用法实例分析
May 27 Python
Python数据类型详解(四)字典:dict
May 12 Python
python实现动态创建类的方法分析
Jun 25 Python
Numpy数组array和矩阵matrix转换方法
Aug 05 Python
Python实现某论坛自动签到功能
Aug 20 Python
Python 经典算法100及解析(小结)
Sep 13 Python
python groupby 函数 as_index详解
Dec 16 Python
Python实现的北京积分落户数据分析示例
Mar 27 Python
python 穷举指定长度的密码例子
Apr 02 Python
python的launcher用法知识点总结
Aug 07 Python
python自动化发送邮件实例讲解
Jan 04 Python
Python连接mssql数据库编码问题解决方法
Jan 01 #Python
Python中optparse模块使用浅析
Jan 01 #Python
Python中urllib2模块的8个使用细节分享
Jan 01 #Python
Python读取ini文件、操作mysql、发送邮件实例
Jan 01 #Python
Python实现检测服务器是否可以ping通的2种方法
Jan 01 #Python
Python Web框架Flask信号机制(signals)介绍
Jan 01 #Python
Python模拟登录12306的方法
Dec 30 #Python
You might like
强烈推荐:php.ini中文版(1)
2006/10/09 PHP
php中关于普通表单多文件上传的处理方法
2011/03/25 PHP
php之Memcache学习笔记
2013/06/17 PHP
php图片缩放实现方法
2014/02/20 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
浅析php创建者模式
2014/11/25 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
2020/08/26 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
浅说js变量
2011/05/25 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
python递归法解决棋盘分割问题
2019/07/17 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
Python作用域与名字空间原理详解
2020/03/21 Python
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
甜品店的创业计划书范文
2014/01/02 职场文书
十佳大学生事迹材料
2014/01/29 职场文书
卖房协议书
2014/04/11 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
学校督导评估方案
2014/06/10 职场文书
英语教研活动总结
2014/07/02 职场文书
给领导的感谢信范文
2015/01/23 职场文书
行政处罚告知书
2015/07/01 职场文书