给我妈写爬虫


我妈今天打电话说她今年带一年级音乐,但是她不会唱歌(这么坑一年级的小朋友??),所以决定给孩子们放配套教材上带的光盘,但是学校的光盘早丢了让我给她下,发我一网址还都是flash,一二年级上下册,崩溃…我说晚上吧我这会比较忙(我已经做好了一个一个点进去在firefox page info里面慢慢找的打算了).最后想想还是算了写爬虫吧,但是我担心我这水平写完大概也能点完了.

搜笔记,发现之前的scrapy笔记….我去这是啥啊,看不懂了…只能用笨办法用正则表达式找了.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import re
import urllib
import subprocess
base_url = 'http://www.pep.com.cn/yinyue/yyjs/yytbjx/2x/yyflash/201009/'
#base_url = 'http://www.pep.com.cn/yinyue/yyjs/yytbjx/1s/yyflash/201008/'
#base_url = 'http://www.pep.com.cn/yinyue/yyjs/yytbjx/1x/yyflash/201009/'
#base_url = 'http://www.pep.com.cn/yinyue/yyjs/yytbjx/2s/yyflash/201009/'
suffix_url_lst = []
for i in xrange(65, 80):
suffix_url_lst.append('t20100901_8542' + str(i) + '.htm')

for suffix_url in suffix_url_lst:
urlhand = urllib.urlopen(base_url + suffix_url)
text = urlhand.read()
if re.findall("<title>(.*)</title>", text) == ['404 Not Found']:
print suffix_url + " page not found!"
else:
songtitle = re.findall("var title = \'(.*)\'", text)
songtitle = songtitle[0].decode('gbk')
print "song title is " + songtitle
swftitle = re.findall("\./(.*?.swf)", text)

if swftitle == []:
print "swf not found!"
continue
swftitle = swftitle[0]
print swftitle
swfurl = base_url + swftitle
print swfurl
child = subprocess.Popen(['wget', swfurl, '-O', songtitle + '.swf'])

这破网站提供的破资源一会是mp3一会是swf的,有的点进去还什么都没有.

下载网页再用正则表达式找绝对是最笨的爬虫,不知道我妈看到我用这么蠢的方法会不会哭出来.