作者jimmyken793 (达)
看板jimmyken793
标题[ HW ] Python 第一话
时间Sun Nov 16 00:38:46 2008
这是迟来的教学罗
首先呢 这篇是以你已经学会基本的Python(判断 回圈等等)为前提
所以不会的 请看看助教的slides 或者左转去 itsming 搜寻python
接下来就要说这次作业大概要怎麽做啦
请尽力把这个看懂
http://docs.python.org/dev/howto/regex.html
这是Python部分的regular expression的文件
基本上 能够独立看懂这种文件会对以後学新东西时有很大的帮助
废话完毕
------
作业的话 程式的内容大概可以分成三步骤
1.抓回网页
2.分析网页
3.把图打包回家
关於第一项 TA的example已经做完啦 所以也没啥好说
第二项就需要用到regular expression罗 除非你想慢慢刻出一个用来parse出图片网址的
程式
所以regular expression是甚麽呢
基本上就是一组用来表示字串的"pattern"的方式
例如 要找 "以123结尾的字串" 或者是 "aa开头bb结尾" 的字串
我们可以用 "*123" 和 "aa*bb" 来表示这两种情况
所以 当然也可以用来找我们这次所需要的图片的网址
基本表示法的话 这里有说明
http://en.wikipedia.org/wiki/Regular_expression
快速教学的话就看这里吧
在python里面 被保留的符号有
^ $ * + ? { [ ] \ | ( )
代表任意一个字元 在某些设定情况下似乎也可以代表\n 不过我没用过
? 代表零或一个任意字元 (也就是这里的字元可有可无的意思)
* 代表零至无限多个任意字元
+ 代表一至无限多个任意字元
^ 行首 或者输入的字串头
$ 行尾 或者输入的字串尾
\ 脱逸字元
[] 符合[]里面叙述的单一字元 例如[a-z]就是a-z (小写) [a-zA-z0-9]就是所有
英数字元
() subexpression 我也不太会解释 而且我只会用下面这种XD
(abc|bca|bbb) 代表只有三种字串可以符合这种条件 abc bca 和 bbb
{} 代表前面的一个block可以重复几次
例如 a{2,4} 代表着以下字串符合这个式子
aa aaa aaaa
而(as){3,5} 代表有下面三种情况符合这个式子
asasas asasasas asasasasas
打的时候要注意 如果你想要用到保留字元的话 要用\脱逸
例如我想要找出所有开头是 www.google.com 结尾是/的字串
那就必须要打 www\.google\.com*/
把.脱逸 否则可能连这种东西都会过
wwwwgoogleecoma/
然後还有
在python里面打标准表示法的时候要注意escape的问题
例如你想要表示刚刚的那个式子
www\.google\.com*/
那麽 必须把\再脱逸一次 (因为\在python读入时也会视为脱逸字元)
就会变成这样
exp = "www\\.google\\.com*/"
所以python读的时候会把\\脱逸成\ 存在记忆体里面的东西就长这样了
www\.google\.com*/
所以呢 我们要表示的是图片的网址
请自己随便去找个相簿 把随便一个图片的网址找出来
像这样
http://jimmyken793.pixnet.net/album/set/1884780 这个相簿(很久以前的点军涂鸦= =)
就用第一张图吧
原始码部分是
<a href="
http://jimmyken793.pixnet.net/album/photo/61089342">
<img
id="thumb61089342"
src="
http://p1.p.pixnet.net/albums/userpics/1/7/286717/thumb_1186276285.png"
class="thumb" width="90" />
</a>
所以网址是
http://p1.p.pixnet.net/albums/userpics/1/7/286717/thumb_1186276285.png
那基本上数字部分都可以替换
其他的 自己写吧XDD
还有助教的code里面有一个下载档案的函式
请多多利用
档名就从网址里面用redular expression撷取就OK了
加油吧各位
--
※ 发信站: 批踢踢兔(ptt2.cc)
◆ From: 118.166.112.71
1F:→ weijer0905:先推一个XD推 11/16 00:44
2F:→ dennis2030:先推一个 今天研究好久还是没头绪Q口Q推 11/16 00:48
3F:→ dennis2030:想法都有 卡在语法跟函式...超干 = =推 11/16 00:48
4F:→ weijer0905:恩嗯 都不会写XD推 11/16 00:50
5F:→ wooffood:看到这篇才熊熊想起有这个作业= ="推 11/16 18:36
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.166.112.71
※ 编辑: jimmyken793 来自: 118.166.112.71 (11/16 19:24)
6F:→ jimmyken793:第一次写这种东西 有不足的欢迎提问 11/16 19:24
7F:→ jimmyken793:或者是我脑残也请指正XD 11/16 19:25
※ 编辑: jimmyken793 来自: 118.166.112.71 (11/16 19:26)
8F:推 justin760204:大感谢 T.T 11/16 19:28
9F:推 ming1053:其实()括起来的部份就是re.findall()之类的会取的部份 11/16 19:38
10F:推 dennis2030:看完吉米肯的文章後 考试都考一百分了呢! 11/16 20:41
11F:推 benck:所以楼上100了!?? 11/16 21:01