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 相关文章推荐
详解Python3.1版本带来的核心变化
Apr 07 Python
基于python(urlparse)模板的使用方法总结
Oct 13 Python
python如何让类支持比较运算
Mar 20 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
Python+pandas计算数据相关系数的实例
Jul 03 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
python字符串Intern机制详解
Jul 01 Python
Golang GBK转UTF-8的例子
Aug 26 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
详解Python 循环嵌套
Jul 09 Python
详细介绍python类及类的用法
May 31 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
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
php编程每天必学之表单验证
2016/03/01 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
html下载本地
2006/06/19 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
代码详解Vuejs响应式原理
2017/12/20 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
vue实现购物车加减
2020/05/30 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
python的mysqldb安装步骤详解
2017/08/14 Python
Python线程同步的实现代码
2018/10/03 Python
python导入坐标点的具体操作
2019/05/10 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
财务总监管理岗位职责
2014/03/08 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
图文详解Nginx版本平滑升级方案
2021/09/15 Servers
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript