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 相关文章推荐
如何利用Fabric自动化你的任务
Oct 20 Python
python 判断是否为正小数和正整数的实例
Jul 23 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
Python数据类型之Number数字操作实例详解
May 08 Python
Python中函数的基本定义与调用及内置函数详解
May 13 Python
深入了解Django中间件及其方法
Jul 26 Python
YUV转为jpg图像的实现
Dec 09 Python
Python netmiko模块的使用
Feb 14 Python
python 命令行传参方法总结
May 25 Python
利用Python多线程实现图片下载器
Mar 25 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
一步一步学习PHP(2)――PHP类型
2010/02/15 PHP
header导出Excel应用示例
2014/01/24 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
JS 建立对象的方法
2007/04/21 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
VUE 单页面使用 echart 窗口变化时的用法
2020/07/30 Javascript
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
Python使用itertools模块实现排列组合功能示例
2018/07/02 Python
Python3 实现文件批量重命名示例代码
2019/06/03 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
英国最大的百货公司:Harrods
2016/08/18 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
直接有效的自我评价
2014/01/11 职场文书
个人承诺书
2014/03/26 职场文书
白血病捐款倡议书
2014/05/14 职场文书
英文演讲稿
2014/05/15 职场文书
团拜会策划方案
2014/06/07 职场文书
大学生党性分析材料
2014/12/19 职场文书
工地材料员岗位职责
2015/04/11 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang