上網簡單看了幾篇博客
自己試了試簡單的爬蟲
哎呦喂
很有感覺
蠻好玩的
之前寫博客 有點感覺是在寫教程啊什么的
寫的很別扭
各種復制粘貼
寫得很不舒服
以后還是怎么舒服怎么寫
把每天的練習
所得
寫上來就好了
本來就是個菜鳥
不斷學習
不斷debug就好
直接上程序:
1 # -*- coding: utf-8 -*- 2 import urllib2 3 import urllib 4 import re 5 6 7 #正則表達式 8 pat = re.compile('img.*?id="bigImg".*?src="(.*?)"') 9 patnext = re.compile('nextPic.*?"(.*?)",') 10 pattotal = re.compile('picTotal.*?(\d*),') 11 patnum = re.compile('picNum.*?(\d*),') 12 patnextgroup = re.compile('nextGroup.*?"(.*?)",') 13 14 #URL 15 nexturl = "http://desk.zol.com.cn" 16 SerialNumber = ["/bizhi/6195_76529_2.html"] 17 nexturl1 = nexturl + SerialNumber[0] 18 19 20 21 #header 22 def s(nexturl2): 23 myurl = nexturl2 24 user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' 25 values = {'username' : 'cqc', 'password' : 'XXXX' } 26 headers = { 'User-Agent' : user_agent } 27 data = urllib.urlencode(values) 28 request = urllib2.Request(myurl, data, headers) 29 myres = urllib2.urlopen(request) 30 return myres 31 32 myres = s(nexturl1) 33 mypage = myres.read() 34 ucpage = mypage.decode("gbk") #ytf-8 35 36 37 total = pattotal.findall(ucpage) #當前組圖總圖數 38 num = patnum.findall(ucpage) #當前編號 39 40 41 print u"num:" 42 max = raw_input(">>>") 43 44 picnum = 1 45 46 while int(picnum) <= int(max): 47 48 49 if int(total[0]) == int(num[0]): #檢測是否抓取完當前組圖 50 SerialNumber = patnextgroup.findall(ucpage) 51 nexturl1 = nexturl + SerialNumber[0] 52 53 myres = s(nexturl1) 54 55 mypage = myres.read() 56 ucpage = mypage.decode("gbk") #ytf-8 57 SerialNumber = patnext.findall(ucpage) 58 59 total = pattotal.findall(ucpage) 60 num = patnum.findall(ucpage) 61 62 mat = pat.findall(ucpage) 63 64 if len(mat) : 65 print "Pic " + str(picnum) + " : Url: " + mat[0] + "\n" 66 67 fnp = re.compile('(\w{6}\.\w+)$') 68 fnr = fnp.findall(mat[0]) 69 if fnr: 70 fname = fnr[0] #下載給的文件名 71 urllib.urlretrieve(mat[0], fname) #下載 72 picnum+=1 73 74 else: 75 print "no data" 76 77 print u"\n\tDone"
程序抓取的是 http://desk.zol.com.cn/bizhi/6262_77251_2.html 的圖片
抓取完一張
就申請進入下一頁繼續抓取
運行結果:
收獲:
1.html js 不熟悉
2.可以通過找URL直接的規律 找下一頁的URL
3.查了些資料 發現很多東西都可以學 html js beautiful soup等
4.還沒習慣用try 語句
5.多練多學多問
6,urllib.urlretrieve() mypage.decode("gbk")
遇到的困難:
1.一開始不知道下一頁的鏈接在哪 找了很久才找到 但方法不對 不知道有什么好的方法 一個原因是不了解 html js
2.一開始不知道怎么“變”到下一頁,所以還想着通過pymouse控制鼠標。。。。。。結果鼠標不受控制 暴力重啟。。。
3.運行的時候會跳出這個問題:IOError: [Errno socket error] [Errno 10060],為什么呢?還需要設置什么?求大神幫忙解決