实现个爬虫小例子,用浏览器登录百度帐号后,不要退出。

运行如下代码:

 1 # -*- coding: utf-8 -*-
 2 import re,sys
 3 import urllib,urllib2,cookielib
 4 class Requests:
 5     def __init__(self):     
 6         cj = cookielib.CookieJar()
 7         opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
 8         urllib2.install_opener(opener)
 9         self.src=None
10         self.content=None
11     def get(self,url):
12         self.src=urllib2.urlopen(url)
13         self.content=self.src.read()
14         self.src.close()
15         return self.content
16     
17 def getMusic(v,num):
18     var={\'top\':\'song\'}               #现在仅支持获取榜单音乐
19     s=Requests()
20     body=s.get("http://music.baidu.com/"+v)
21 
22     ids=re.findall("href=\"/"+var[v]+"/\d+",body)
23     if not ids:
24         sys.exit(-1)
25     idlists=[]
26     fg=len("href=\"/"+var[v])+1
27     for i in ids:
28         idlists.append(i[fg:])      
29     if num>len(idlists):
30         num=len(idlists)
31     for songId in idlists[0:num]:
32         body=s.get("http://music.baidu.com/"+var[v]+"/"+songId)      
33         if not body:
34             print songId,": no response."
35             return -1;
36         #print body
37 
38         name=re.search("<title>\S*,",body)
39         if not name:
40             print "no name"
41             return -1;
42         strname=name.group()
43         name=strname.split(\',\')[0][7:]
44         print name,
45         
46         fd=open(name+".mp3","wb+")
47         gs=re.findall("http://\S+xcode\S+",body)
48         if gs:
49             for i in gs:
50                 url=i[0:len(i)-1]
51                 mp3=s.get(url)
52                 fd.write(mp3)
53                 print "成功!"
54         else:
55             print "失败!"
56         fd.close()
57 if __name__==\'__main__\':
58     getMusic(\'top\',2)          #获取2首

会在你的代码文件当前目录下创建下载的音乐。

解析html仅用的re模块,倒是可以用HTMLParser等模块,这里比较简单就没用。

版权声明:本文为wuchaofan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wuchaofan/p/3379316.html