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 相关文章推荐
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
Python使用pyodbc访问数据库操作方法详解
Jul 05 Python
Django单元测试工具test client使用详解
Aug 02 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
Python 实现将数组/矩阵转换成Image类
Jan 09 Python
Python 去除字符串中指定字符串
Mar 05 Python
Python爬虫爬取电影票房数据及图表展示操作示例
Mar 27 Python
python 实现图像快速替换某种颜色
Jun 04 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 Python
Python实现爬取网页中动态加载的数据
Aug 17 Python
Python 数据可视化工具 Pyecharts 安装及应用
Apr 20 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
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
Python基础之getpass模块详细介绍
2017/08/10 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
python分布式编程实现过程解析
2019/11/08 Python
如何在sublime编辑器中安装python
2020/05/20 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
终端业务员岗位职责
2013/11/27 职场文书
感谢信格式范文
2015/01/22 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
公司宣传语大全
2015/07/13 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL