文档章节

python-20:爬取糗事百科段子源码

达岭凹老大
 达岭凹老大
发布于 2015/11/25 09:18
字数 446
阅读 200
收藏 0

到这里,我们爬取糗事百科这个入门项目已经结束了,下面贴上源码:

---------------------------------爬取糗事百科段子源码----------------------------

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217小月月坑'

import urllib2
import re

# url:存放url网址的变量
url = 'http://www.qiushibaike.com/'
# user_agent:存放身份识别信息的变量
user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Geck
o/20100101 Firefox/40.0'
# 一个headers的字典,headers可以有很多项,所以要用一个字典来存放
headers = {'User-Agent': user_agent}
'''
req = urllib2.Request(url, headers)
这样写是错误的,TypeError: must be string or buffer, not dict
'''
'''
为什么要使用headers=headers
原因:urllib2.Request 有三个参数,url,data,和headers,
如果将所有参数都写上去的话,可以直接写urllib2.Request(url, data, headers)
如果第二个参数不写的话,要指明第三个参数
'''
# 加入异常处理,注意try,expetc,if语句后面要有冒号
try:
    # 构造一个请求
    req = urllib2.Request(url, headers=headers)
    # 发送请求,获取返回的数据
    response = urllib2.urlopen(req)
    # 将爬取的网页源码存入一个变量中
    content = response.read()
    # 使用compile将正则表达式编译并存入一个pattern变量中
    # 注:这里使用了四个正则额表达式,每一个表达式获取一个想要的信息
    pattern = re.compile(r'<h2>(.*?)</h2>.*?'+'<div.*?class="content">
(.*?)<!.*?'+'<div.*?class="stats".*?class="number">(.*?)</i>.*?'+
'<span.*?class="dash".*?class="number">(.*?)</i>.*?',re.S)
    # 使用findall方法按re查找,findall返回的是一个列表
    items = re.findall(pattern,content)
    # 使用for循环遍历列表中的元素并将它们打印出来
    for item in items:
        print '发布人:'+item[0]+'\n','段子内容:'+item[1]+'\n','点赞数:'
+item[2]+'\n','评论数:'+item[3]+'\n'
except urllib2.URLError, e:
    if hasattr(e,"code"):
        print e.code
    if hasattr(e,"reason"):
        print e.reason

输出的结果如下:

© 著作权归作者所有

达岭凹老大
粉丝 60
博文 83
码字总数 69643
作品 0
南宁
程序员
私信 提问
分享我自己写的一套Python爬虫学习经验

最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多。学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫感兴...

崔庆才
2015/02/23
4K
25
Python3.x实现简单爬虫—爬糗事百科

1、Python版本:3.5,urllib库, 2、爬取糗事百科24小时热门段子,第一页(网页地址:http://www.qiushibaike.com/hot/1) 3、使用正则匹配, re库 4、Python2的urllib、urllib2合并成pytoh...

大猩猩secrets
2016/10/25
76
0
Python爬虫框架Scrapy架构和爬取糗事百科段子结果

根据上篇文章《Python爬虫框架Scrapy之爬取糗事百科大量段子数据》(传送门:Python爬虫框架Scrapy之爬取糗事百科大量段子数据),写好了糗百段子的爬虫,接下来就是开始运行然后获取结果了。...

铁扇公主1
2017/05/24
242
0
python—爬虫

1.1 介绍 通过过滤和分析HTML代码,实现对文件、图片等资源的获取,一般用到: urllib和urllib2模块 正则表达式(re模块) requests模块 Scrapy框架 urllib库: 1)获取web页面 2)在远程htt...

huangzp168
2018/01/12
0
0
Python分分钟爬取糗事百科,让自己充满内涵

使用Python爬取糗事百科 代码如下: 必须加上head否则无法抓取. 学习资料也可以加下Python扣扣裙:四八三五四六四一六自己下载学习下 虽然核心部分已经完成了,但是还需要将代码更改为面向对...

python达人
2018/05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

无回路有向图的拓扑排序

因公司业务需要,在表单中每个字段都会配置自动计算,但自动计算公式中会引用到其他字段中的值。所以希望可以根据计算公式,优先计算引用的公式。所以最终使用了无回路有向图的扩扑排序来实现...

兜兜毛毛
44分钟前
4
0
如何抢占云栖大会C位?史上最强强强攻略来了

点击观看视频: APSARA云栖大会开发者情怀 原文链接 本文为云栖社区原创内容,未经允许不得转载。

阿里云官方博客
57分钟前
5
0
Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

作者 | 声东 阿里云售后技术专家<br /> 文章来源:Docker,点击查看原文。 <br />以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解...

阿里巴巴云原生
今天
7
0
PHP7.3的新特性

2018年12月6日,PHP7.3正式版发布,在PHP7.2基础上进行了大量错误修复和安全优化,性能提升10%! 从目前的更新说明来看,PHP 7.3 并不是一个主打新特性的版本,包含更多的是 bug 修复。PHP 7...

迅睿CMS-PHP开源CMS程序
今天
7
0
Tomcat 应用中并行流带来的类加载问题

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/f-X3n9cvDyU5f5NYH6mhxQ 作者:肖铭轩、王道环 随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)...

vivo互联网技术
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部