python challenge 02

第二题的题目就是 首先我们先查看网页的源代码 可以看见在最下面中<!-- -->这里面有一大堆字符! 我们的目的就是在这一大堆字符里面找到字符 首先我们现需要把这个源代码里面的这一部分进行爬取 所以在python中我们需要用到urllib.request 这个库 因为我用的是python3 所以这里urllib和urllib2 合成了一个urllib库 通过这个urllib.request模块的导入我们可以较快的进行一些网页的爬取 在这里我用的是 urllib.request.urlopen 这个模块

html=urllib.request.urlopen("http://www.pythonchallenge.com/pc/def/ocr.html").read().decode()

我用到了这个语句 这时候有可能就会注意到后面的read() 和 decode() 有什么作用 现在我在解释一下 我当时的时候也是一头雾水完全不知道这个read 有什么作用 但是我当时试着把read进行了删除 发现出了一个错误

AttributeError: 'HTTPResponse' object has no attribute 'decode'

就是这个错误 去网上进行了一下搜索urllib.request.urlopen返回一个HTTPResponse不能直接json解码的对象(因为它是一个字节流) 所以我们需要read()来获得实际的字符串 我不知道我这样理解的对不对 可以说是一个容器 暂时接收? 还有一个就是decode可以说就是以指定的编码方式来进行一些解码然后默认的格式就是UTF-8 然后剩下的我们只要再使用re的一个模块来进行正则表达式的匹配就可以了 好了话不多说直接上代码

import re
import urllib.request

html = urllib.request.urlopen("http://www.pythonchallenge.com/pc/def/ocr.html").read().decode()
print(html)
data = re.findall("<!--(.*?)-->",html,re.DOTALL)[-1]
print("".join(re.findall(r'[a-zA-Z]',data)))


# read 就是读取 decode 就是把原来的字节码 转换成字符串码
# 第五行就是 通过非贪婪模式 把<!-- --> 然后选取最后一块
# 最后一行 通过 正则表达式 来进行匹配

然后最后的结果就是equality

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇