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下安装python2.7及科学计算套装
Mar 05 Python
python 类详解及简单实例
Mar 24 Python
解决DataFrame排序sort的问题
Jun 07 Python
Python判断以什么结尾以什么开头的实例
Oct 27 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
python批量修改文件夹及其子文件夹下的文件内容
Mar 15 Python
Golang GBK转UTF-8的例子
Aug 26 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
基于opencv的selenium滑动验证码的实现
Jul 24 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 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
PHP中的正规表达式(二)
2006/10/09 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
JS实现self的resend
2010/07/22 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
javascript基础知识讲解
2017/01/11 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
Promise扫盲贴
2019/06/24 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
2020/12/09 Javascript
Python Trie树实现字典排序
2014/03/28 Python
Python数据结构之Array用法实例
2014/10/09 Python
在Python中使用Mako模版库的简单教程
2015/04/08 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
python 实现登录网页的操作方法
2018/05/11 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
python实现人机猜拳小游戏
2020/02/03 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
祖国在我心中演讲稿200字
2014/08/28 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python