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实现DNS正向查询、反向查询的例子
Apr 25 Python
python中global与nonlocal比较
Nov 21 Python
开始着手第一个Django项目
Jul 15 Python
vscode 远程调试python的方法
Dec 01 Python
mac 安装python网络请求包requests方法
Jun 13 Python
Python中实例化class的执行顺序示例详解
Oct 14 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
python中dict()的高级用法实现
Nov 13 Python
利用Python脚本实现自动刷网课
Feb 03 Python
Django自定义全局403、404、500错误页面的示例代码
Mar 08 Python
python 实现控制鼠标键盘
Nov 27 Python
使用Djongo模块在Django中使用MongoDB数据库
Jun 20 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
PHP 中的类
2006/10/09 PHP
PHP中GET变量的使用
2006/10/09 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
简单谈谈python中的lambda表达式
2018/01/19 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
便捷提取python导入包的属性方法
2018/10/15 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
Pytorch 实现权重初始化
2019/12/31 Python
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
小学新学期教师寄语
2014/01/18 职场文书
商务考察邀请函范文
2014/01/21 职场文书
清扬洗发水广告词
2014/03/14 职场文书
营销团队口号
2014/06/06 职场文书
军训口号
2014/06/13 职场文书
学习退步检讨书
2014/09/28 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
如何做好工作总结!
2019/04/10 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL
python 调用js的四种方式
2021/04/11 Python