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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL数据库在高并发下的优化方案
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境