Python3使用正则表达式爬取内涵段子示例


Posted in Python onApril 22, 2018

本文实例讲述了Python3使用正则表达式爬取内涵段子的方法。分享给大家供大家参考,具体如下:

似乎正则在爬虫中用的不是很广泛,但是也是基本功需要我们去掌握。

先将内涵段子网页爬取下来,之后利用正则进行匹配,匹配完成后将匹配的段子写入文本文档内。代码如下:

# -*- coding:utf-8 -*-
from urllib import request as urllib2
import re
# 利用正则表达式爬取内涵段子
url = r'http://www.neihanpa.com/article/list_5_{}.html'
headers = {
  'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',
}
file_name = '内涵段子.txt'
for page in range(2):
# 2表示页数,可以自行调整
  fullurl = url.format(str(page+1))
  request = urllib2.Request(url=fullurl, headers=headers)
  response = urllib2.urlopen(request)
  html = response.read().decode('gbk')
  # re.S 如果没有re.S 则是只匹配一行有没有符合规则的字符串,如果没有则下一行重新匹配
  # 如果加上re.S 则是将所有的字符串作为一个整体进行匹配
  pattern = re.compile(r'<div\sclass="f18 mb20">(.*?)</div>',re.S)
  duanzis = pattern.findall(html)
  for duanzi in duanzis:
    duanzi = duanzi.replace('<p>','').replace('</p>','').replace('<br />','\n').replace('“','').replace('&rdquo','').replace('…','')
    try:
      # 将爬取的段子写入文件
      file = open(file_name,'a',encoding='utf-8')
      file.write('\n'.join(duanzi.split()))
      file.close()
    except OSError as e:
      print(e)

运行后生成如下图所示文件:

Python3使用正则表达式爬取内涵段子示例

Python 相关文章推荐
python基础教程之lambda表达式使用方法
Feb 12 Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
python异常和文件处理机制详解
Jul 19 Python
浅谈Python浅拷贝、深拷贝及引用机制
Dec 15 Python
Python单例模式的两种实现方法
Aug 14 Python
Python基于更相减损术实现求解最大公约数的方法
Apr 04 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
Apr 16 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
Python趣味入门教程之循环语句while
Aug 26 Python
Python贪心算法实例小结
Apr 22 #Python
python 判断网络连通的实现方法
Apr 22 #Python
Python3之读取连接过的网络并定位的方法
Apr 22 #Python
对Python 网络设备巡检脚本的实例讲解
Apr 22 #Python
python爬虫_实现校园网自动重连脚本的教程
Apr 22 #Python
selenium+python实现自动登录脚本
Apr 22 #Python
python实现校园网自动登录的示例讲解
Apr 22 #Python
You might like
一段php加密解密的代码
2006/10/09 PHP
PHP form 表单传参明细研究
2009/07/17 PHP
Memcache 在PHP中的使用技巧
2010/02/08 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
php构造函数实例讲解
2013/11/13 PHP
php设计模式之单例模式代码
2016/06/11 PHP
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
jquery心形点赞关注效果的简单实现
2016/11/14 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
微信小程序云开发之使用云函数
2019/05/17 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
Python正则表达式介绍
2012/08/06 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
django-初始配置(纯手写)详解
2019/07/30 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
中文系师范生自荐信
2013/10/01 职场文书
小学生自我鉴定
2013/10/12 职场文书
应用心理学个人的求职信
2013/12/08 职场文书
实践单位评语
2014/04/26 职场文书
计生工作先进事迹
2014/08/15 职场文书
中学生打架检讨书
2014/10/13 职场文书
写给领导的感谢信
2015/01/22 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
《月光曲》教学反思
2016/02/16 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android