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编写的最短路径算法
Mar 25 Python
Python计算三维矢量幅度的方法
Jun 15 Python
Python 迭代器工具包【推荐】
May 06 Python
详解python中的文件与目录操作
Jul 11 Python
Python实现自动上京东抢手机
Feb 06 Python
python 通过 socket 发送文件的实例代码
Aug 14 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
Python中的 is 和 == 以及字符串驻留机制详解
Jun 28 Python
django在开发中取消外键约束的实现
May 20 Python
python实现批量命名照片
Jun 18 Python
keras 多任务多loss实例
Jun 22 Python
关于Numpy之repeat、tile的用法总结
Jun 02 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
2020/08/06 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
Javascript 跨域访问解决方案
2009/02/14 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
Python进程通信之匿名管道实例讲解
2015/04/11 Python
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
python获取从命令行输入数字的方法
2015/04/29 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
python定义具名元组实例操作
2021/02/28 Python
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
超市国庆节促销方案
2014/02/20 职场文书
教师自我鉴定范文
2014/03/20 职场文书
好习惯伴我成长演讲稿
2014/05/21 职场文书
鼓舞士气的口号
2014/06/16 职场文书
80后婚前协议书范本
2014/10/24 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
js之ajax文件上传
2021/05/13 Javascript