python爬蟲之初體驗


上網簡單看了幾篇博客
自己試了試簡單的爬蟲
哎呦喂
很有感覺
蠻好玩的

之前寫博客 有點感覺是在寫教程啊什么的
寫的很別扭
各種復制粘貼
寫得很不舒服

以后還是怎么舒服怎么寫
把每天的練習
所得
寫上來就好了
本來就是個菜鳥
不斷學習
不斷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],為什么呢?還需要設置什么?求大神幫忙解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM