天天看點

python之網絡爬蟲

一、演繹自已的北愛 

        踏上北漂的航班,開始演奏了我自已的北京愛情故事

二、爬蟲1

1、網絡爬蟲的思路

首先:指定一個url,然後打開這個url位址,讀其中的内容。

其次:從讀取的内容中過濾關鍵字;這一步是關鍵,可以通過檢視源代碼的方式擷取。

最後:下載下傳擷取的html的url位址,或者圖檔的url位址儲存到本地

2、針對指定的url來網絡爬蟲

分析:

第一步:大約共有4300個下一頁。

第二步:一個頁面上有10個個人頭像

第三步:一個頭像内大約有100張左右的個人圖檔

<a href="http://s3.51cto.com/wyfs02/M01/4D/FB/wKiom1Re1DjxFLWEAAI4xhSpEeU805.jpg" target="_blank"></a>

這個頁面預設是沒有下一頁按鈕的,我們可以通過修改其url位址來進行檢視下一個頁面

<a href="http://s3.51cto.com/wyfs02/M01/4D/FA/wKioL1Re1WrieaAHAAJOq58aESc130.jpg" target="_blank"></a>

最後一頁的url位址和頁面展示如下圖所示:

<a href="http://s3.51cto.com/wyfs02/M01/4D/FB/wKiom1Re1W-xRcNPAAEzpyPjmyo284.jpg" target="_blank"></a>

點選任意一個頭像來進入個人的首頁,如下圖

<a href="http://s3.51cto.com/wyfs02/M02/4D/FA/wKioL1Re1q7AU3EwAANbsDDzi1k438.jpg" target="_blank"></a>

3、定制的腳本

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

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

<code>#!/usr/bin/env python</code>

<code>#coding:utf-8</code>

<code>#Author:Allentuns</code>

<code>#Email:[email protected]</code>

<code>import</code> <code>urllib</code>

<code>import</code> <code>os</code>

<code>import</code> <code>sys</code>

<code>import</code> <code>time</code>

<code>ahref = </code><code>'&lt;a href="'</code>

<code>ahrefs = </code><code>'&lt;a href="h'</code>

<code>ahtml = </code><code>".htm"</code>

<code>atitle = </code><code>"&lt;img style"</code>

<code>ajpg = </code><code>".jpg"</code>

<code>btitle = </code><code>'&lt;img src="'</code>

<code>page = 0</code>

<code>while</code> <code>page &lt; 4300:    </code><code>#這個地方可以修改;最大值為4300,我測試的時候寫的是3.</code>

<code>        </code><code>mmurl = </code><code>"http://mm.taobao.com/json/request_top_list.htm?type=0&amp;page=%d"</code> <code>%(page)</code>

<code>        </code><code>content = urllib.urlopen(mmurl).</code><code>read</code><code>()</code>

<code>        </code><code>href = content.</code><code>find</code><code>(ahref)</code>

<code>        </code><code>html = content.</code><code>find</code><code>(ahtml)</code>

<code>        </code><code>url = content[href + len(ahref) : html + len(ahtml)]</code>

<code>        </code><code>print url</code>

<code>        </code><code>imgtitle = content.</code><code>find</code><code>(btitle,html)</code>

<code>        </code><code>imgjpg = content.</code><code>find</code><code>(ajpg,imgtitle)</code>

<code>        </code><code>littleimgurl = content[imgtitle + len(btitle): imgjpg + len(ajpg)]</code>

<code>        </code><code>print littleimgurl</code>

<code>        </code><code>urllib.urlretrieve(littleimgurl,</code><code>"/www/src/temp/image/taobaomm/allentuns.jpg"</code><code>)</code>

<code>        </code><code>s = 0</code>

<code>        </code><code>while</code> <code>s &lt; 18:</code>

<code>                </code><code>href = content.</code><code>find</code><code>(ahrefs,html)</code>

<code>                </code><code>html = content.</code><code>find</code><code>(ahtml,href)</code>

<code>                </code><code>url = content[href + len(ahref): html + len(ajpg)]</code>

<code>                </code><code>print s,url</code>

<code>                </code><code>imgtitle = content.</code><code>find</code><code>(btitle,html)</code>

<code>                </code><code>imgjpg = content.</code><code>find</code><code>(ajpg,imgtitle)</code>

<code>                </code><code>littleimgurl = content[imgtitle : imgjpg + len(ajpg)]</code>

<code>                </code><code>littlesrc = littleimgurl.</code><code>find</code><code>(</code><code>"src"</code><code>)</code>

<code>                </code><code>tureimgurl = littleimgurl[littlesrc + 5:]</code>

<code>                </code><code>print s,tureimgurl</code>

<code>                </code><code>if</code> <code>url.</code><code>find</code><code>(</code><code>"photo"</code><code>) == -1:</code>

<code>                        </code><code>content01 = urllib.urlopen(url).</code><code>read</code><code>()</code>

<code>                        </code><code>imgtitle = content01.</code><code>find</code><code>(atitle)</code>

<code>                        </code><code>imgjpg = content01.</code><code>find</code><code>(ajpg,imgtitle)</code>

<code>                        </code><code>littleimgurl = content01[imgtitle : imgjpg + len(ajpg)]</code>

<code>                        </code><code>littlesrc = littleimgurl.</code><code>find</code><code>(</code><code>"src"</code><code>)</code>

<code>                        </code><code>tureimgurl = littleimgurl[littlesrc + 5:]</code>

<code>                        </code><code>print tureimgurl</code>

<code>                        </code><code>imgcount = content01.count(atitle)</code>

<code>                        </code><code>i = 20</code>

<code>                        </code><code>try:</code>

<code>                                </code><code>while</code> <code>i &lt; imgcount:</code>

<code>                                        </code><code>content01 = urllib.urlopen(url).</code><code>read</code><code>()</code>

<code>                                        </code><code>imgtitle = content01.</code><code>find</code><code>(atitle,imgjpg)</code>

<code>                                        </code><code>imgjpg = content01.</code><code>find</code><code>(ajpg,imgtitle)</code>

<code>                                        </code><code>littleimgurl = content01[imgtitle : imgjpg + len(ajpg)]</code>

<code>                                        </code><code>littlesrc = littleimgurl.</code><code>find</code><code>(</code><code>"src"</code><code>)</code>

<code>                                        </code><code>tureimgurl = littleimgurl[littlesrc + 5:]</code>

<code>                                        </code><code>print i,tureimgurl</code>

<code>                                        </code><code>time</code><code>.</code><code>sleep</code><code>(1)</code>

<code>                                        </code><code>if</code> <code>tureimgurl.count(</code><code>"&lt;"</code><code>) == 0:</code>

<code>                                                </code><code>imgname = tureimgurl[tureimgurl.index(</code><code>"T"</code><code>):]</code>

<code>                                                </code><code>urllib.urlretrieve(tureimgurl,</code><code>"/www/src/temp/image/taobaomm/%s-%s"</code> <code>%(page,imgname))</code>

<code>                                        </code><code>else</code><code>:</code>

<code>                                                </code><code>pass</code>

<code>                                        </code><code>i += 1</code>

<code>                        </code><code>except IOError:</code>

<code>                                </code><code>print </code><code>'/nWhy did you do an EOF on me?'</code>

<code>                                </code><code>break</code>

<code>                        </code><code>except:</code>

<code>                                </code><code>print </code><code>'/nSome error/exception occurred.'</code>

<code>                </code><code>s += 1</code>

<code>        </code><code>else</code><code>:</code>

<code>                </code><code>print </code><code>"---------------{&lt; 20;1 page hava 10 htm and pic  }-------------------------}"</code>

<code>        </code><code>page = page + 1</code>

<code>        </code><code>print </code><code>"****************%s page*******************************"</code> <code>%(page)</code>

<code>else</code><code>:</code>

<code>        </code><code>print </code><code>"Download Finshed."</code>

4、圖檔展示(部分圖檔)

<a href="http://s3.51cto.com/wyfs02/M00/4D/FA/wKioL1Re2ICiL6AQAAhVHpRxlWc887.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/4D/FB/wKiom1Re2BvxeUXWAAhjd5UBBfo108.jpg" target="_blank"></a>

5、檢視下載下傳的圖檔數量

二、爬蟲2

1、首先來分析url

第一步:總共有7個頁面;

第二步:每個頁面有20篇文章

第三步:檢視後總共有317篇文章

<a href="http://s3.51cto.com/wyfs02/M02/4D/FB/wKiom1Re2xzwiidxAAZjxM8KAOM147.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/4D/FA/wKioL1Re24aQ2iNbAAd97-WqAm4390.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/4D/FB/wKiom1Re2yGwofzrAAeL33Kq3ao239.jpg" target="_blank"></a>

2、python腳本

腳本的功能:通過給定的url來将這片部落格裡面的所有文章下載下傳到本地

<code>#coding: utf-8</code>

<code>list00 = []</code>

<code>i = j = 0</code>

<code>page = 1</code>

<code>while</code> <code>page &lt; 8:</code>

<code>        </code><code>str = </code><code>"http://blog.sina.com.cn/s/articlelist_1191258123_0_%d.html"</code> <code>%(page)</code>

<code>        </code><code>content = urllib.urlopen(str).</code><code>read</code><code>()</code>

<code>        </code><code>title = content.</code><code>find</code><code>(r</code><code>"&lt;a title"</code><code>)</code>

<code>        </code><code>href  = content.</code><code>find</code><code>(r</code><code>"href="</code><code>,title)</code>

<code>        </code><code>html  = content.</code><code>find</code><code>(r</code><code>".html"</code><code>,href)</code>

<code>        </code><code>url = content[href + 6:html + 5]</code>

<code>        </code><code>urlfilename = url[-26:]</code>

<code>        </code><code>list00.append(url)</code>

<code>        </code><code>print i,  url</code>

<code>        </code><code>while</code> <code>title != -1 and href != -1 and html != -1 and i &lt; 350:</code>

<code>                </code><code>title = content.</code><code>find</code><code>(r</code><code>"&lt;a title"</code><code>,html)</code>

<code>                </code><code>href  = content.</code><code>find</code><code>(r</code><code>"href="</code><code>,title)</code>

<code>                </code><code>html  = content.</code><code>find</code><code>(r</code><code>".html"</code><code>,href)</code>

<code>                </code><code>url = content[href + 6:html + 5]</code>

<code>                </code><code>urlfilename = url[-26:]</code>

<code>                </code><code>list00.append(url)</code>

<code>                </code><code>i = i + 1</code>

<code>                </code><code>print i,  url</code>

<code>                </code><code>print </code><code>"Link address Finshed."</code>

<code>        </code><code>print </code><code>"This is %s page"</code> <code>%(page)</code>

<code>        </code><code>print </code><code>"spage="</code><code>,list00[50]</code>

<code>        </code><code>print list00[:51]</code>

<code>        </code><code>print list00.count(</code><code>""</code><code>)</code>

<code>        </code><code>print </code><code>"All links address Finshed."</code>

<code>x = list00.count(</code><code>''</code><code>)</code>

<code>a = 0</code>

<code>while</code> <code>a &lt; x:</code>

<code>        </code><code>y1 = list00.index(</code><code>''</code><code>)</code>

<code>        </code><code>list00.pop(y1)</code>

<code>        </code><code>print a</code>

<code>        </code><code>a = a + 1</code>

<code>print list00.count(</code><code>''</code><code>)</code>

<code>listcount = len(list00)</code>

<code>while</code> <code>j &lt; listcount:</code>

<code>        </code><code>content = urllib.urlopen(list00[j]).</code><code>read</code><code>()</code>

<code>        </code><code>open</code><code>(r</code><code>"/tmp/hanhan/"</code><code>+list00[j][-26:],</code><code>'a+'</code><code>).write(content)</code>

<code>        </code><code>print </code><code>"%2s is finshed."</code> <code>%(j)</code>

<code>        </code><code>j = j + 1</code>

<code>        </code><code>#time.sleep(1)</code>

<code>        </code><code>print </code><code>"Write to file End."</code>

3、下載下傳文章後的截圖

<a href="http://s3.51cto.com/wyfs02/M01/4D/FB/wKiom1Re3XzBVDbjAAlH2M5t-kI943.jpg" target="_blank"></a>

     本文轉自zys467754239 51CTO部落格,原文連結:http://blog.51cto.com/467754239/1574528,如需轉載請自行聯系原作者