PythonChallenge 2:爬虫和正则表达式
题目:
解题思路:
题目里已经说的很清楚了,字符可能在网页的源代码里。右键查看网页源代码,发现其中有一段:find rare characters in the mess below。有些人是直接把下面这长长一段复制下来,然后进行处理。我觉得吧,这法子实在有些简单粗暴…我的解决方法是先用urllib2抓取网页,然后通过正则表达式获取文本并进行处理。
实现方法:
- import urllib2
- import re
- req = urllib2.urlopen('http://www.pythonchallenge.com/pc/def/ocr.html')
- res = req.read()
- mess = ''.join(re.findall('-->(.*)-->',res,re.S))
- chars = ''.join(re.findall(r'[a-z]|[A-Z]|[0-9]',mess))
- print chars
方法解释:
- urllib2通过简单的 urllib2.urlopen(url).read() 即可获取网页内容。
- 为了获取待处理的文本,需要通过正则表达式对抓取的网页内容进行处理。对于换行符的处理,这里有一个很简单的方法,即在findall方法里添加re.S参数,这会使得’.’能够匹配包括换行符在内的任意字符。如果没有re.S参数,’.’ 将匹配不包括换行符的任意字符。
- findall方法返回的是一个包含匹配到的字符的列表,为了方便下一步的处理,通过”.join方法将列表中的元素添加到一个空白字符串中。”.join表示各元素之间无分隔符号,’.’.join 则表示加入字符串时通过.进行分隔,”之间可以是任意符号。
- 最后,匹配字符串中的大小写字母及数字。我一开始只匹配了[a-z],即匹配所有小写字母。虽然最后得到的结果一样,但题目里并没有说characters是大写小写或是数字,因此加上[A-Z]和[0-9]会更严谨一点。
输出:
equality
将url里的ocr替换成equality进入下一关。
PythonChallenge 2:爬虫和正则表达式的更多相关文章
- python 3.x 爬虫基础---正则表达式
python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---Requer ...
- 玩转python爬虫之正则表达式
玩转python爬虫之正则表达式 这篇文章主要介绍了python爬虫的正则表达式,正则表达式在Python爬虫是必不可少的神兵利器,本文整理了Python中的正则表达式的相关内容,感兴趣的小伙伴们可以 ...
- [Python] 网络爬虫和正则表达式学习总结
以前在学校做科研都是直接利用网上共享的一些数据,就像我们经常说的dataset.beachmark等等.但是,对于实际的工业需求来说,爬取网络的数据是必须的并且是首要的.最近在国内一家互联网公司实习, ...
- Python爬虫之正则表达式(3)
# re.sub # 替换字符串中每一个匹配的子串后返回替换后的字符串 import re content = 'Extra strings Hello 1234567 World_This is a ...
- 【Python爬虫】正则表达式与re模块
正则表达式与re模块 阅读目录 在线正则表达式测试 常见匹配模式 re.match re.search re.findall re.compile 实战练习 在线正则表达式测试 http://tool ...
- python爬虫训练——正则表达式+BeautifulSoup爬图片
这次练习爬 传送门 这贴吧里的美食图片. 如果通过img标签和class属性的话,用BeautifulSoup能很简单的解决,但是这次用一下正则表达式,我这也是参考了该博主的博文:传送门 所有图片的s ...
- 【python爬虫和正则表达式】爬取表格中的的二级链接
开始进公司实习的一个任务是整理一个网页页面上二级链接的内容整理到EXCEL中,这项工作把我头都搞大了,整理了好几天,实习生就是端茶送水的.前段时间学了爬虫,于是我想能不能用python写一个爬虫一个个 ...
- Python爬虫运用正则表达式
我看到最近几部电影很火,查了一下猫眼电影上的数据,发现还有个榜单,里面有各种经典和热映电影的排行榜,然后我觉得电影封面图还挺好看的,想着一张一张下载真是费时费力,于是突发奇想,好像可以用一下最近学的东 ...
- Python爬虫基础——正则表达式
说到爬虫,不可避免的会牵涉到正则表达式. 因为你需要清晰地知道你需要爬取什么信息?它们有什么共同点?可以怎么去表示它们? 而这些,都需要我们熟悉正则表达,才能更好地去提取. 先简单复习一下各表达式所代 ...
随机推荐
- AspxGridView ComboBoxComlum列数据联动
第1步: 页面放置AspxGridView控件, 设置列ComboBox1, ComboBox2列, 拟通过ComboBox1列更新联动ComboBox2列. 两个数据列均为"ComboBo ...
- File.Create创建文件后,需要释放资源
if (!File.Exists(SavePath)) { File.Create(SavePath).Close(); }
- IOS 后台执行
在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供特定的服务,用户可以请求后台执行时间 ...
- 理解C#系列 / C#语言的特性
C#语言的特性 大多数语句都已(;)结尾 用({})定义语句块 单行注释(//),多行注释(/*......*/)智能注释(///) 区分大小写 用namespace名称空间对类进行分类 在C#中的所 ...
- jquery 和 js 对象转换
核心提示:jquery选择器得到的jquery对象和标准的 javascript中的document.getElementById()取得的dom对象是两种不同的对象类型,一般情况下,如S(’#id’ ...
- 深入探析koa之异步回调处理篇
在上一篇中我们梳理了koa当中中间件的洋葱模型执行原理,并实现了一个可以让洋葱模型自动跑起来的流程管理函数.这一篇,我们再来研究一下koa当中异步回调同步化写法的原理,同样的,我们也会实现一个管理函数 ...
- 学习笔记:JavaScript传参方式———ECMAScript中所有函数的参数都是按值传递
我们把命名参数(arguments)视为局部变量,在向参数传递基本类型值时,如同基本类型变量的复制一样,传递一个副本,参数在函数内部的改变不会影响外部的基本类型值.如: function add10( ...
- jquery页面滚动,菜单固定到顶部
// 菜单固定 $(function(){ //获取要定位元素距离浏览器顶部的距离 var navH = $("#topp").offset().top; //滚动条事件 $(wi ...
- C语言 猜数游戏--产生一个随机数
#include <stdio.h> #include <time.h> #include <stdlib.h> int main(int argc, const ...
- SQL Server死锁的分析、处理与预防
1.基本原理 所谓“死锁”,在操作系统的定义是:在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态. 定义比较抽象,下图可以帮助你比较直观的 ...