在前几篇文章中我们使用了python的urllib模块,做了一些访问网页的工作。现在介绍一个非常强大的工具——正则表达式。在讲述正则的时候,我参考了《精通正则表达式(第三版)     ---Jeffrey E.F.Friedl》这本书,虽然本书的参考语言并没有python,但相通之处颇多,可以细读一部分。

    通常我们在制作爬虫收集数据的时候,需要对服务器传输的数据进行匹配筛选,例如在第二篇文章中下载链家二手房页面的时候,我们只需要房址location和价格price。这时正则表达式就派上用场了。所谓正则表达式,就是一种描述字符串结构模式的形式化表达方法。最初,这套方法用于描述正则文本的,后期发展它的功能变得非常强大。python自从1.5版本起就加入了正则模块re。一方面,正则描述的是一个对象序列,即当今计算机世界的本质数据结构,另一方面,正则有着极强的结构描述能力。基于这两点,我们需要好好学习一下正则表达式。

    这次我们使用另外一个模块——requests,来验证。首先pip install requests,安装上这个package。requests的使用看起来比urllib要简单一些:

 #首先我们导入这个包
import requsets url="http://www.17jita.com/tab/img/8088.html" #GET方法
response=requests.get(url)
#POST方法
response=requests.post(url) #其他
response=requests.put(url)
response=requests.delete(url)
response=requests.head(url)
response=requests.options(url) #获取内容
html=response.text
print(html)

    关于requests模块,我们可以在以后使用过程中继续学习。下面我们来看基于正则表达式的re模块,然后可以用re来匹配网页上的内容了。

一、正则表达式的规则

    正则表达式有以下几个元字符,他们各自都有着特殊的含义:  .   ^  $  *  +  { }  [ ]  \   |  (  )  。 例如点号(.)表示匹配除换行符以外的任何字符,管道符(|)则有点类似于逻辑或操作。我们可以在  http://tool.oschina.net/uploads/apidocs/jquery/regexp.html    这个网站上查看正则的手册。help(re),我们可以看到这些方法:match,fullmatch,search,split,findall......等。

下面我们来举几个例子。例如我们要对以下这些数据进行匹配“ 1305101765@qq.com   advantage  314159265358 1892673 3.14 little Girl try_your_best 56 123456789@163.com  python3”

1、匹配advantage,我们用search方法来实现,如果匹配成功它会返回位置。

可以看到,我们只找到了advantage第一个字母a的位置span=(21,22)。如果要想匹配整个单词呢?

  可以看到我们match到了advantage。其中 (.)   表示匹配除了换行符体外的任何字符, (+)   表示匹配前面的子表达式一次或者多次。

2、匹配邮箱地址

    其中中括号里面的0-9表示0123456789,a-z表示26个字母,{}表示匹配里面的内容一次或多次。这次我们用findall(),他能找出所有满足正则规则的字符串,并返回这些字符串。当然,上面的规则可以继续完善,以至于可以匹配任何的邮箱。

    在下一篇我们将解决匹配ip地址的问题,并且从网站上爬取可用ip。

python爬虫(4)——正则表达式(一)的更多相关文章

  1. 玩转python爬虫之正则表达式

    玩转python爬虫之正则表达式 这篇文章主要介绍了python爬虫的正则表达式,正则表达式在Python爬虫是必不可少的神兵利器,本文整理了Python中的正则表达式的相关内容,感兴趣的小伙伴们可以 ...

  2. 【Python爬虫】正则表达式与re模块

    正则表达式与re模块 阅读目录 在线正则表达式测试 常见匹配模式 re.match re.search re.findall re.compile 实战练习 在线正则表达式测试 http://tool ...

  3. python 爬虫之-- 正则表达式

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. 正则表达式非python独有,python 提供了正则表达式的接口,re模块 一.正则匹配字符简介 模式 描述 \d ...

  4. python爬虫训练——正则表达式+BeautifulSoup爬图片

    这次练习爬 传送门 这贴吧里的美食图片. 如果通过img标签和class属性的话,用BeautifulSoup能很简单的解决,但是这次用一下正则表达式,我这也是参考了该博主的博文:传送门 所有图片的s ...

  5. 【python爬虫和正则表达式】爬取表格中的的二级链接

    开始进公司实习的一个任务是整理一个网页页面上二级链接的内容整理到EXCEL中,这项工作把我头都搞大了,整理了好几天,实习生就是端茶送水的.前段时间学了爬虫,于是我想能不能用python写一个爬虫一个个 ...

  6. Python爬虫运用正则表达式

    我看到最近几部电影很火,查了一下猫眼电影上的数据,发现还有个榜单,里面有各种经典和热映电影的排行榜,然后我觉得电影封面图还挺好看的,想着一张一张下载真是费时费力,于是突发奇想,好像可以用一下最近学的东 ...

  7. Python爬虫之正则表达式(3)

    # re.sub # 替换字符串中每一个匹配的子串后返回替换后的字符串 import re content = 'Extra strings Hello 1234567 World_This is a ...

  8. Python爬虫之正则表达式(1)

    廖雪峰正则表达式学习笔记 1:用\d可以匹配一个数字:用\w可以匹配一个字母或数字: '00\d' 可以匹配‘007’,但是无法匹配‘00A’; ‘\d\d\d’可以匹配‘010’: ‘\w\w\d’ ...

  9. python爬虫之正则表达式

    一.简介 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念 ...

  10. Python爬虫基础——正则表达式

    说到爬虫,不可避免的会牵涉到正则表达式. 因为你需要清晰地知道你需要爬取什么信息?它们有什么共同点?可以怎么去表示它们? 而这些,都需要我们熟悉正则表达,才能更好地去提取. 先简单复习一下各表达式所代 ...

随机推荐

  1. 【JSP/Servlet】后台如何获取复选框或可选属性的同名参数

    感觉自己jsp/servlet部分学的太差了--今天突然想到还有这种操作,遂分享之 比如有些时候我们需要使用复选框发送同名数据的时候,后台接收参数是个麻烦事,还有可选属性也是如此 有丰富经验的会想到a ...

  2. linux 树型显示文件 tree ls tree 命令

    原创 2016年07月27日 09:50:19   yum install tree tree www │?? │?? │?? └── xml.test │?? │?? └── valgrind.su ...

  3. arclistsg文档独立模型标签

    [标签名称] arclistsg [标签简介] 单表独立模型的文档列表调用标记 [功能说明] 用于调用单表模型的内容,在V5.3系统以上版本中加入了单表模型的概念,脱离了以前的主从表的数据表关联结构, ...

  4. 数据库DBUtils基本使用

    Apache-DBUtils简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,使用dbutils能极大简化jdbc编码的工作量,同 ...

  5. 《HelloGitHub》第 22 期

    公告 年前最后一期,下次就是年后了,老时间 每月的 28 号,年后见- <HelloGitHub>第 22 期 兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 G ...

  6. 【转】Maven pom.xml 配置详解

    原文链接:https://yq.aliyun.com/articles/38271 pom.xml文件配置详解 --声明规范 <project xmlns="http://maven. ...

  7. 20165206学习基础和C语言基础调查

    - 技能 我的一项可以拿的出手的技能是萨克斯.但不敢说有多厉害,更不敢说比大多数人更好,只能说是还可以.我学萨克斯有5年左右的时间吧,这5年里印象最深刻的还是前两年.前两年主要是基础训练.我从最基础的 ...

  8. 懒人小技巧, Toad 常用偷懒方法

    用toad很久了, 感叹它的功能强大的同时整理了一些相关技巧,  有以前在网上看到的也有自己平时用的时候偶尔发现的, 分享一下, 它对用户体验方面做的真的很到位, 通过各种方式来方便用户的操作. 菜鸟 ...

  9. FORTH 安装使用

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  10. 使用Botkit和Rasa NLU构建智能聊天机器人

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 我们每天都会听到关于有能力涉及旅游.社交.法律​​.支持.销售等领域的新型机器人推出的新闻.根据我最后一次查阅的数据,单单Facebook Me ...