Python 爬取糗事百科段子
#!/usr/bin/python # -*- coding:utf-8 -*- import urllib import urllib2 import re import sys reload(sys) sys.setdefaultencoding('utf8') page = 1 url = 'http://www.qiushibaike.com/hot/page/' + str(page) user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36' headers = {'User-Agent':user_agent} try: request = urllib2.Request(url,headers = headers) response = urllib2.urlopen(request) # print response.read() ######_match_ string content = response.read().decode('utf-8') # 其中 (.*?)为匹配的内容 # 如果对正则不是很熟的同学,可以参考以下: # 1. “.”是通配符,”*”表示匹配0次或任意次,”?”表示非贪婪匹配,.*?组合在一起则表示尽可能短地做匹配。 # 2. (.*?)代表一个分组,或者说一个捕获组。 # 3. re.S 标志代表在匹配时为点任意匹配模式,点 . 也可以代表换行符。 pattern = re.compile(r'<div.*?author clearfix".*?<img.*?<h2>(.*?)</h2>.*?<div.*?'+ 'content">.*?<span>(.*?)</span>.*?<div class="stats.*?class="number">(.*?)</i>',re.S) items = re.findall(pattern,content) # print("%s"%items) for item in items: print("auther:%s"%item[0]) print("content:%s"%item[1]) print("likes:%s\n"%item[2]) except urllib2.URLError,e: if hasattr(e,'code'): print e.code if hasattr(e,'reaon'): print e.reason
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Golang 入门系列(五)GO语言中的面向对象
前面讲了很多Go 语言的基础知识,包括go环境的安装,go语言的语法等,感兴趣的朋友可以先看看之前的文章。https://www.cnblogs.com/zhangweizhong/category/1275863.html。 今天GO语言中的面向对象。 GO语言中的面向对象 其实GO并不是一个纯面向对象编程语言。它没有提供类(class)这个关键字,只提供了结构体(struct)类型。 java或者C# 里面,结构体(struct)是不能有成员函数的。然而,Go语言中的结构体(struct)可以有"成员函数"。方法可以被添加到结构体中,类似于一个类的实现。 我个人觉得Go 语言在的面向对象,其实更简单,也更容易理解。 学过java或C# 的人应该都知道,面向对象的三个基本特征:封装、继承和多态。他们的定义我这里就不细说了。下面,就直接看看 go 语言下的面向对象是怎样实现的吧。 1. 封装特性 Golang区分公有属性和私有属性的机制就是方法或属性是否首字母大写,如果首字母大写的方法就是公有的,如果首字母小写的话就是私有的。 package main import "fmt"...
- 下一篇
Python | Python学习之异步IO框架:asyncio(上)
asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。 有些同学,可能很疑惑,既然有了以生成器为基础的协程,我们直接使用yield 和 yield from 不就可以手动实现对IO的调度了吗? 为何Python吃饱了没事干,老重复造轮子。 这个问题很好回答,就跟为什么会有Django,为什么会有Scrapy,是一个道理。 他们都是框架,将很多很重复性高,复杂度高的工作,提前给你做好,这样你就可以专注于业务代码的研发。 跟着小明学完了协程的那些个难点,你是不是也发现了,协程的知识点我已经掌握了,但是我还是不知道怎么用,如何使用,都说它可以实现并发,但是我还是不知道如何入手? 那是因为,我们现在还缺少一个成熟的框架,帮助你完成那些复杂的动作。这个时候,ayncio就这么应运而生了。本文目录 ● 如何定义/创建协程 ● asyncio的几个概念 ● 学习协程是如何工作的 ● await与yield对比 ● 绑定回调函数 如何定义/创建协程 还记得在「Python并发编程之从生成器使用入门协程(七)」章节的时候,我们创建了生成器,是如何去检验我们创建的是不是生成器对...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker快速安装Oracle11G,搭建oracle11g学习环境