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 Django(图文)
Nov 04 Python
Python的subprocess模块总结
Nov 07 Python
python中global与nonlocal比较
Nov 21 Python
Python中return语句用法实例分析
Aug 04 Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 Python
使用python进行拆分大文件的方法
Dec 10 Python
解决Pycharm界面的子窗口不见了的问题
Jan 17 Python
matplotlib实现区域颜色填充
Mar 18 Python
用python打印菱形的实操方法和代码
Jun 25 Python
python实现自动化上线脚本的示例
Jul 01 Python
PyQt5多线程刷新界面防假死示例
Dec 13 Python
Python3基于print打印带颜色字符串
Jul 06 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数组去重实例及分析
2013/11/26 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
angular 动态组件类型详解(四种组件类型)
2017/02/22 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
python脚本作为Windows服务启动代码详解
2018/02/11 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
python批量创建指定名称的文件夹
2019/03/21 Python
Python数据类型之List列表实例详解
2019/05/08 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
中专毕业生自荐信
2013/11/16 职场文书
西北政法大学自主招生自荐信
2014/01/29 职场文书
党员批评与自我批评
2014/02/12 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
2014年三万活动总结
2014/04/26 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
思想品德课教学反思
2016/02/24 职场文书