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爬虫之打包生成exe文件
Nov 06 Python
浅谈Python 对象内存占用
Jul 15 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
Feb 02 Python
python 获取文件下所有文件或目录os.walk()的实例
Apr 23 Python
Python将string转换到float的实例方法
Jul 29 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
Python运行DLL文件的方法
Jan 17 Python
Django 返回json数据的实现示例
Mar 05 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
Python批量安装卸载1000个apk的方法
Apr 10 Python
Matplotlib自定义坐标轴刻度的实现示例
Jun 18 Python
Django中的JWT身份验证的实现
May 07 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实现文件下载【实例分享】
2017/04/28 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
PHP时间类完整代码实例
2021/02/26 PHP
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
Python的Django框架中的数据库配置指南
2015/07/17 Python
python奇偶行分开存储实现代码
2018/03/19 Python
Python将string转换到float的实例方法
2019/07/29 Python
Python中断多重循环的思路总结
2019/10/04 Python
如何给Python代码进行加密
2020/01/10 Python
使用Python求解带约束的最优化问题详解
2020/02/11 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
计算机学生求职信范文
2014/01/30 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
Redis可视化客户端小结
2021/06/10 Redis
Java基础-封装和继承
2021/07/02 Java/Android