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使用PIL缩放网络图片并保存的方法
Apr 24 Python
用实例解释Python中的继承和多态的概念
Apr 27 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
好的Python培训机构应该具备哪些条件
May 23 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
Python实现手机号自动判断男女性别(实例解析)
Dec 22 Python
keras获得model中某一层的某一个Tensor的输出维度教程
Jan 24 Python
Python logging模块写入中文出现乱码
May 21 Python
Python join()函数原理及使用方法
Nov 14 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
域名和cookie问题(域名后缀)
2012/10/10 PHP
php使用GeoIP库实例
2014/06/27 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
jquery replace方法去空格
2017/05/08 jQuery
JS实现图片拖拽交换效果
2018/11/30 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
Python3搜索及替换文件中文本的方法
2015/05/22 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
Python实现Linux中的du命令
2017/06/12 Python
python实现超市扫码仪计费
2018/05/30 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
Python文件操作方法详解
2020/02/09 Python
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
大学校运会广播稿
2014/02/03 职场文书
入学生会自荐书范文
2014/02/05 职场文书
大学应届生的自我评价
2014/03/06 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
劳动争议仲裁代理词
2015/05/25 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
如何正确理解python装饰器
2021/06/15 Python
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers