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下如何让web元素的生成更简单的分析
Jul 17 Python
Pyramid添加Middleware的方法实例
Nov 27 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
python绘制铅球的运行轨迹代码分享
Nov 14 Python
python使用pandas实现数据分割实例代码
Jan 25 Python
python奇偶行分开存储实现代码
Mar 19 Python
Python Flask 搭建微信小程序后台详解
May 06 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
python实现修改固定模式的字符串内容操作示例
Dec 30 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
python如何做代码性能分析
Apr 26 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
解析zend Framework如何自动加载类
2013/06/28 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
python中defaultdict的用法详解
2017/06/07 Python
python实现对csv文件的列的内容读取
2018/07/04 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
人力资源行政经理自我评价
2013/10/23 职场文书
大学生实习自我鉴定
2013/12/11 职场文书
有关打架的检讨书
2014/01/25 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
检讨书范文2000字
2015/01/28 职场文书
2016公司年会通知范文
2015/04/25 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
代码复现python目标检测yolo3详解预测
2022/05/06 Python
Linux中文件的基本属性介绍
2022/06/01 Servers
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技