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

方法解释:

  1. urllib2通过简单的 urllib2.urlopen(url).read() 即可获取网页内容。
  2. 为了获取待处理的文本,需要通过正则表达式对抓取的网页内容进行处理。对于换行符的处理,这里有一个很简单的方法,即在findall方法里添加re.S参数,这会使得’.’能够匹配包括换行符在内的任意字符。如果没有re.S参数,’.’ 将匹配不包括换行符的任意字符。
  3. findall方法返回的是一个包含匹配到的字符的列表,为了方便下一步的处理,通过”.join方法将列表中的元素添加到一个空白字符串中。”.join表示各元素之间无分隔符号,’.’.join 则表示加入字符串时通过.进行分隔,”之间可以是任意符号。
  4. 最后,匹配字符串中的大小写字母及数字。我一开始只匹配了[a-z],即匹配所有小写字母。虽然最后得到的结果一样,但题目里并没有说characters是大写小写或是数字,因此加上[A-Z]和[0-9]会更严谨一点。

输出:
equality

将url里的ocr替换成equality进入下一关。

时间: 2024-09-30 07:08:04

PythonChallenge 2:爬虫和正则表达式的相关文章

关于爬虫的正则表达式一点记录

今天再爬虫的正则表达式里纠结了很久,记录下来,防止忘记再浪费时间 content = requests.get(url) m=re.findall(r'<a href=\"([0-9a-zA-Z\_\/\.\%\?\=\-\&]+)\"',content.text,re.I) 一开始,我把content变成str(content)放在正则匹配式中,无法匹配,可能是因为str(content)是空的. 所以一定要用content.text来匹配 原文地址:https://w

互联网金融爬虫怎么写-第二课 雪球网股票爬虫(正则表达式入门)

系列教程: 互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门) 上一节课我们一起通过一个p2p网贷爬虫,深入了解了一下XPath以及其在最终实际使用中的写法.可以毫不夸张的说,对于写简单爬虫来说,最最重要的,就是使用好XPath,以及这一课要讲的正则表达式. 正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE) 正 则表达式几乎出现在每一个编程语言中,有着极其广泛的应用,比如做网页的时候,判断用户输入的是

Python爬虫运用正则表达式

我看到最近几部电影很火,查了一下猫眼电影上的数据,发现还有个榜单,里面有各种经典和热映电影的排行榜,然后我觉得电影封面图还挺好看的,想着一张一张下载真是费时费力,于是突发奇想,好像可以用一下最近学的东西实现我的需求,学习了正则表达式之后,想着要感受一下它在爬虫里面的效果和优缺点. 目标:爬取Top100榜单上电影的封面图 Top100榜单规则:将猫眼电影库中的经典影片,按照评分和评分人数从高到低综合排序取前100名,每天上午10点更新.相关数据来源于“猫眼电影库”. 下面是我做的步骤: (1)查

爬虫之正则表达式的应用爬取

Python 的 re 模块 在 Python 中,我们可以使用内置的 re 模块来使用正则表达式. 有一点需要特别注意的是,正则表达式使用 对特殊字符进行转义,所以如果我们要使用原始字符串,只需加一个 r 前缀,示例: r'chuanzhiboke\t\.\tpython' re 模块的一般使用步骤如下: 使用 compile() 函数将正则表达式的字符串形式编译为一个 Pattern 对象 通过 Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果,一个 Match 对象.

python爬虫:正则表达式

符号: . : 匹配任意字符(类似占位符,多少个.就表示多少个字符),换行符除外(与re.S相反) *:匹配前面一个字符0次或无限次 ?:匹配前面一个字符0次或1次 组合: .* : 贪心算法 一次匹配尽多 .*? :非贪心算法 匹配少量多次 () :括号内的数据作为返回结果 (.*?) :需要查找的内容   最常用 方法: findall : 匹配所有符合规律的内容,返回包含结果的列表: Search: 匹配并提取第一个符合规律的内容,返回一个正则表达式的对象(object) Sub:替换复合

爬虫学习----正则表达式

1. Python通过re模块提供对正则表达式的支持. 使用re的一般步骤是: Step1:先将正则表达式的字符串形式编译为Pattern实例. Step2:然后使用Pattern实例处理文本并获得匹配结果(一个Match实例). Step3:最后使用Match实例获得信息,进行其他的操作. # -*- coding: utf-8 -*-#一个简单的re实例,匹配字符串中的hello字符串 #导入re模块import re # 将正则表达式编译成Pattern对象,注意hello前面的r的意思是

python爬虫之正则表达式

一.简介 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列匹配某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些匹配某个模式的文本. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. 二.使用方法 1.简单看一下

爬虫前提——正则表达式语法以及在Python中的使用

正则表达式是用来处理字符串的强大工具,他并不是某种编程云. 正则表达式拥有独立的承受力引擎,不管什么编程语言,正则表达式的语法都是一样的. 正则表达式的匹配过程 1.一次拿出表达式和文本中的字符比较. 2.如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符则匹配失败. 3.如果表达式中有两次或便捷,这个过程会稍微有一些不同. 下面举例一些符号 [....] 字符集(字符类).对应的位置可以是字符集中任意字符.字符集中的字符可以猪哥列出,也可以给出范围,如[abc]或[a-c].第一个字符

python3网络爬虫学习——正则表达式

正则表达式是处理字符串的强大工具,有着自己的语法结构. 1.实例引入 可以使用开源中国的 http://tool.oschina.net/regex# 可以看到有许多匹配项,正则表达式匹配就是按照一定规则将特定的文本提取出来.比如电子邮件开头是一段字符串,然后是一个@符号,最后是某个域名,这是由特定的格式组成的.至于匹配的具体规则,可以参见这个博客https://www.jianshu.com/p/773c32dcd254     一些规则的汇总可以看这个博主https://www.cnblog