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中的jquery PyQuery库使用小结
May 13 Python
Python之PyUnit单元测试实例
Oct 11 Python
Python中使用PIPE操作Linux管道
Feb 04 Python
OpenCV-Python实现轮廓检测实例分析
Jan 05 Python
Python装饰器用法实例总结
May 26 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
Nov 30 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
pytorch简介
Nov 11 Python
python中最小二乘法详细讲解
Feb 19 Python
Python实现聚类K-means算法详解
Jul 15 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中cookie的作用域
2008/03/27 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
php中函数前加&amp;符号的作用分解
2014/07/08 PHP
php截取中文字符串函数实例
2015/02/23 PHP
php检查页面是否被百度收录
2015/10/28 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
[51:22]Fnatic vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python获取远程文件大小的函数代码分享
2014/05/13 Python
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
实习自我评价怎么写
2013/12/02 职场文书
给校长的建议书
2014/03/12 职场文书
协议书与合同的区别
2014/04/18 职场文书
公司周年庆典标语
2014/10/07 职场文书
毕业典礼致辞
2015/07/29 职场文书
python入门之算法学习
2021/04/22 Python