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解析模块(ConfigParser)使用方法
Dec 10 Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
python经典趣味24点游戏程序设计
Jul 26 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
Nov 30 Python
关于sys.stdout和print的区别详解
Dec 05 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
python super用法及原理详解
Jan 20 Python
基于python生成英文版词云图代码实例
May 16 Python
pandas处理csv文件的方法步骤
Oct 16 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/11/27 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
php的debug相关函数用法示例
2016/07/11 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
鼠标事件延时切换插件
2011/03/12 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
2020/08/21 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
js操作table中tr的顺序实现上移下移一行的效果
2018/11/22 Javascript
Python中的__slots__示例详解
2017/07/06 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
selenium3.0+python之环境搭建的方法步骤
2021/02/01 Python
荟萃全球保健品:维他购
2018/05/09 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
施工安全责任书
2014/04/14 职场文书
审计专业自荐信范文
2014/04/21 职场文书
中央空调节能方案
2014/06/15 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
Elasticsearch 索引操作和增删改查
2022/04/19 Python
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS