python学习爬虫获取糗事百科段子

利用前面学到的文件、正则表达式、urllib的知识,综合运用,爬取糗事百科的段子

先用urllib库获取糗事百科热帖第一页的数据。并打开文件进行保存,正好可以熟悉一下之前学过的文件知识。

打开文件可以看到如下内容:

div class=”article block untagged mb15 typs_long” id=’qiushi_tag_119848276’表示一个文章的开始,id为文章对应的id,h2 之间的是发布者的姓名‘高老庄福帅猪刚鬣’,span与/span之间的是正文, i class=”number”与/i,635表示赞的个数,同样也可以获取评论的个数。

下面要用到学过的正则表达式的知识,过滤掉没有用的信息,只获取评论数,作者,正文,以及点赞的数量。

re.compile(),参数re.S表示将.的作用扩充为任意字符,因为前几篇文章讲述过.在一般情况下匹配除/n之外的所有字符。

正则表达式中.*?连起来匹配任意字符,且为非贪婪模式。因为.表示任意字符,表示匹配前一个字符0个或多个,

.*表示匹配任意多个字符,而加上?表示非贪婪模式。

re.search是搜索匹配正则表达式规则的条目,search讲述过可以从内容的任意位置查找。这样就可以找到一个符合这种规则的段子。如果找到所有符合规则的段子可以用re.findall进行查找。

下面一气呵成,将网站上的段子按照正则表达式匹配,并将匹配后的段子写入文件,同时在终端显示

效果如下:

本文来自企鹅号 - 码农的工匠情怀媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏有趣的Python

py编程技巧-2.4-如何对迭代器做切片操作实现对于文本的切片操作?

实际案例 有某个人文本文件,我们想读取某范围的内容:如100-300行之间的内容 ,python中文本文件是一个可迭代对象,我们是否可以使用类似于列表切片 ...

2976
来自专栏九彩拼盘的叨叨叨

glob 介绍

glob 最早是出现在类Unix系统的命令行中, 是用来匹配文件路径的。比如,lib/**/*.js 匹配 lib 目录下所有的 js 文件。

893
来自专栏angularejs学习篇

页面上通过地址栏传值时出现乱码的两种解决方法

1752
来自专栏java一日一条

Java代码编译和执行的整个过程

JVM的类加载是通过ClassLoader及其子类来完成的,类的层次关系和加载顺序可以由下图来描述:

1022
来自专栏Java帮帮-微信公众号-技术文章全总结

10.Java文件操作案例

10.Java文件操作案例 Java 实例 - 文件写入 以下实例演示了使用 write() 方法向文件写入内容: 实例 ? 以上代码运行输出结果为: ? 创建...

3416
来自专栏大数据架构师专家

python异常处理

异常处理是工作中编写代码必须要完成的内容,对于不符合预期的用户操作或数据输入,程序总会出现异常情况,而对异常情况能够妥善处理,是保证程序稳定性的关键工作...

1152
来自专栏我是攻城师

如何证明Java多线程中的成员变量的值是互不可见的

前面的几篇文章主要介绍了Java的内存模型,进程和线程的定义,特点和联系,其中在Java多线程里面有一个数据不可见的问题而我们知道使用volatile可以解决,...

1434
来自专栏刘望舒

Java并发编程(七)ConcurrentLinkedQueue的实现原理和源码分析

前言 我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队...

25210
来自专栏java一日一条

Java代码编译和执行的整个过程

JVM的类加载是通过ClassLoader及其子类来完成的,类的层次关系和加载顺序可以由下图来描述:

841
来自专栏Java编程技术

Dubbo剖析-增强SPI的实现

在Duboo剖析-整体架构分析中介绍了dubbo中除了Service 和 Config 层为 API外,其他各层均为SPI,为SPI意味着下面各层都是组件化可以...

1361

扫码关注云+社区

领取腾讯云代金券