Python使用正则表达式获取网页中所需要的信息


Posted in Python onJanuary 29, 2018

使用正则表达式的几个步骤:

1、用import re 导入正则表达式模块;

2、用re.compile()函数创建一个Regex对象;

3、用Regex对象的search()或findall()方法,传入想要查找的字符串,返回一个Match对象;

4、调用Match对象的group()方法,返回匹配到的字符串。

在交互式环境中简单尝试一下,查询字符串中的固话:

import re
 text = '小明家的固话是0755-123456,而小丽家的固话时0789-654321,小王家的电话是123456789'#用于检测的字符串
 ph_re = re.compile(r'\d{4}?-\d+') #创建Regex对象,匹配几种电话的方式,\d表示0-9的数字,{4}表示前面的匹配4次,?表示可选,+表示出现1次或多次。
 matchs1 = ph_re.findall(text) #findall()表示查找所有匹配项,返回一个字符串
 matchs2 = ph_re.search(text)#search(),查找第一次匹配的文本,返回一个对象。
 print(matchs1)
 print(matchs2)
 matchs2.group()

返回的结果,是这样的:

findall()方法返回的是一个字符串,可以直接打印出来。而search()方法返回的是一个对象,所以打印出来的是是如图的第二行。

调用group(),对象返回匹配的结果。

最后,小王的电话之所以没有匹配到,是因为'-'没有进行可选即在其后加上‘?'。

下面进行一个小的实验,获取某个网页中所有的http/https网址,并计算有多少个。

首先是获取HTML文件。这里要用到requests模块。

# -*- coding: utf-8 -*-
 import requests
 import re
 def get_html(url):
  res = requests.get(url)
  res.encoding = 'utf-8'
  html = res.text
  return html

这里get_html函数返回的,其实就类似上面例子中的text,用来匹配的文本。

然后,创建正则表达式:

def get_addr(response):
  addr_regex = re.compile(r'''(
   (http://|https://)?#http/https
   (www)?
   (\.[a-z1-9A-Z]+)
   (\.com|\.cn)
   )''',re.VERBOSE)#匹配网址,
  matchs = []
  for groups in addr_regex.findall(response):
   matchs.append(groups[0])
  if len(matchs) == 0:
   print('没有网址')  
  return matchs

这里向re.compile(),传入变量re.VERBOSE,作为第二个参数,可以将正则表达式放在多行,并进行注释,如上。

返回一个matchs列表对象。

再来个启动函数。

def start():
  url = 'http://news.163.com/18/0127/18/D966K4CO0001899N.html'
  a = get_html(url)
  b = get_addr(a)
  print('\n'.join(b))
  print(str(len(b)))
  print('ok')
if __name__ == '__main__':
  start()

这里传入的url是我随意找的一个新闻链接。

然后调用get_html()get_addr(),就得到了想要的东西。str(len(b)),为统计的数量。

测试的结果是类似这样的:

这里似乎获取一些URL,没什么卵用。。。但是,如果结合前面的查询新闻列表的方式,获取批量url,

而创建的正则是xxx.jpg,然后调用os模块,os.mkdir(folder)、os.chdir(folder),将获取到的匹配结果写入文件,放入某个文件夹。

那么就可以实现,从某些网站上批量获取jpg图片,然后存入某个文件夹的爬虫功能。实测,可行!

总结

以上所述是小编给大家介绍的Python使用正则获取网页中所需要的信息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python共享引用(多个变量引用)示例代码
Dec 04 Python
python学习之第三方包安装方法(两种方法)
Jul 30 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
Jan 10 Python
python实现requests发送/上传多个文件的示例
Jun 04 Python
python爬虫框架scrapy实现模拟登录操作示例
Aug 02 Python
python字符串查找函数的用法详解
Jul 08 Python
python如何将两个txt文件内容合并
Oct 18 Python
python绘制随机网络图形示例
Nov 21 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 25 Python
Python OpenCV形态学运算示例详解
Apr 07 Python
LeetCode189轮转数组python示例
Aug 05 Python
python实现K最近邻算法
Jan 29 #Python
python简单实现操作Mysql数据库
Jan 29 #Python
Django框架教程之正则表达式URL误区详解
Jan 28 #Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 #Python
python中的随机函数小结
Jan 27 #Python
python中的随机函数random的用法示例
Jan 27 #Python
Python闭包之返回函数的函数用法示例
Jan 27 #Python
You might like
做个自己站内搜索引擎
2006/10/09 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
json 入门基础教程 推荐
2009/10/31 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
JS获取时间的方法
2015/01/21 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python3 flask实现文件上传功能
2020/03/20 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
Python中字符串List按照长度排序
2019/07/01 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
学Python 3的理由和必要性
2019/11/19 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
跟单文员的岗位职责
2013/11/14 职场文书
新员工欢迎词
2014/01/12 职场文书
爱国卫生月实施方案
2014/02/21 职场文书
大专生求职信
2014/06/29 职场文书
员工趣味活动方案
2014/08/27 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
纪委立案决定书
2015/06/24 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
python实现商品进销存管理系统
2022/05/30 Python