博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-20:爬取糗事百科段子源码
阅读量:5870 次
发布时间:2019-06-19

本文共 1455 字,大约阅读时间需要 4 分钟。

hot3.png

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

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

#!/usr/bin/env python# -*- coding: UTF-8 -*-__author__ = '217小月月坑'import urllib2import re# url:存放url网址的变量url = 'http://www.qiushibaike.com/'# user_agent:存放身份识别信息的变量user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/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'

(.*?)

.*?'+'
(.*?)
(.*?).*?'+'
(.*?).*?',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

输出的结果如下:

25091831_bB5Z.jpg

转载于:https://my.oschina.net/u/2429887/blog/535195

你可能感兴趣的文章
es-03-DSL的简单使用
查看>>
docker必须要sudo,但是sudo的话,又获得不了环境变量怎么办?
查看>>
在ionic这个框架下(Angular JS),对URL进行重写,过滤掉URL中的#号
查看>>
SGU 252 Railway Communication(KM)
查看>>
vmware虚拟机里的LINUX不能上网的原因一:虚拟网卡设置
查看>>
关于CCSpriteSheet报错问题
查看>>
用HTML5实现人脸识别
查看>>
批处理学习总结之常用符号
查看>>
监控摄像机的区别和分类
查看>>
Maven实战(四)——基于Maven的持续集成实践
查看>>
验证码生成类
查看>>
ENGINE_API CXNoTouch
查看>>
What is the difference between concurrency, parallelism and asynchronous methods?
查看>>
Job集群设计
查看>>
个人管理 - Learn More,Study Less!
查看>>
Linux 统计代码行数
查看>>
网络打印机 RPC服务器不可用
查看>>
日期推算处理.sql
查看>>
PHP中如何防止直接访问或查看或下载config.php文件
查看>>
(转)用Ajax技术让IE Web Control Tree View实现大数据量读取
查看>>