天天看点

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,如需转载请自行联系原作者