python之网络爬虫

简介:

一、演绎自已的北爱 


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


二、爬虫1

1、网络爬虫的思路

首先:指定一个url,然后打开这个url地址,读其中的内容。

其次:从读取的内容中过滤关键字;这一步是关键,可以通过查看源代码的方式获取。

最后:下载获取的html的url地址,或者图片的url地址保存到本地


2、针对指定的url来网络爬虫

分析:

第一步:大约共有4300个下一页。

第二步:一个页面上有10个个人头像

第三步:一个头像内大约有100张左右的个人图片

指定的淘宝mm的url为:http://mm.taobao.com/json/request_top_list.htm?type=0&page=1

wKiom1Re1DjxFLWEAAI4xhSpEeU805.jpg

这个页面默认是没有下一页按钮的,我们可以通过修改其url地址来进行查看下一个页面

wKioL1Re1WrieaAHAAJOq58aESc130.jpg

最后一页的url地址和页面展示如下图所示:

wKiom1Re1W-xRcNPAAEzpyPjmyo284.jpg

点击任意一个头像来进入个人的主页,如下图

wKioL1Re1q7AU3EwAANbsDDzi1k438.jpg

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
#!/usr/bin/env python
#coding:utf-8
#Author:Allentuns
#Email:zhengyansheng@hytyi.com
 
 
import  urllib
import  os
import  sys
import  time
 
ahref =  '<a href="'
ahrefs =  '<a href="h'
ahtml =  ".htm"
atitle =  "<img style"
ajpg =  ".jpg"
btitle =  '<img src="'
 
page = 0
while  page < 4300:     #这个地方可以修改;最大值为4300,我测试的时候写的是3.
         mmurl =  "http://mm.taobao.com/json/request_top_list.htm?type=0&page=%d"  %(page)
         content = urllib.urlopen(mmurl). read ()
 
         href = content. find (ahref)
         html = content. find (ahtml)
         url = content[href + len(ahref) : html + len(ahtml)]
         print url
         imgtitle = content. find (btitle,html)
         imgjpg = content. find (ajpg,imgtitle)
         littleimgurl = content[imgtitle + len(btitle): imgjpg + len(ajpg)]
         print littleimgurl
 
         urllib.urlretrieve(littleimgurl, "/www/src/temp/image/taobaomm/allentuns.jpg" )
 
         s = 0
         while  s < 18:
                 href = content. find (ahrefs,html)
                 html = content. find (ahtml,href)
                 url = content[href + len(ahref): html + len(ajpg)]
                 print s,url
 
                 imgtitle = content. find (btitle,html)
                 imgjpg = content. find (ajpg,imgtitle)
                 littleimgurl = content[imgtitle : imgjpg + len(ajpg)]
                 littlesrc = littleimgurl. find ( "src" )
                 tureimgurl = littleimgurl[littlesrc + 5:]
                 print s,tureimgurl
 
 
                 if  url. find ( "photo" ) == -1:
                         content01 = urllib.urlopen(url). read ()
                         imgtitle = content01. find (atitle)
                         imgjpg = content01. find (ajpg,imgtitle)
                         littleimgurl = content01[imgtitle : imgjpg + len(ajpg)]
                         littlesrc = littleimgurl. find ( "src" )
                         tureimgurl = littleimgurl[littlesrc + 5:]
                         print tureimgurl
 
                         imgcount = content01.count(atitle)
                         i = 20
                         try:
                                 while  i < imgcount:
                                         content01 = urllib.urlopen(url). read ()
                                         imgtitle = content01. find (atitle,imgjpg)
                                         imgjpg = content01. find (ajpg,imgtitle)
                                         littleimgurl = content01[imgtitle : imgjpg + len(ajpg)]
                                         littlesrc = littleimgurl. find ( "src" )
                                         tureimgurl = littleimgurl[littlesrc + 5:]
                                         print i,tureimgurl
                                         time . sleep (1)
                                         if  tureimgurl.count( "<" ) == 0:
                                                 imgname = tureimgurl[tureimgurl.index( "T" ):]
                                                 urllib.urlretrieve(tureimgurl, "/www/src/temp/image/taobaomm/%s-%s"  %(page,imgname))
                                         else :
                                                 pass
                                         i += 1
                         except IOError:
                                 print  '/nWhy did you do an EOF on me?'
                                 break
                         except:
                                 print  '/nSome error/exception occurred.'
 
                 s += 1
         else :
                 print  "---------------{< 20;1 page hava 10 htm and pic  }-------------------------}"
         page = page + 1
         print  "****************%s page*******************************"  %(page)
else :
         print  "Download Finshed."

4、图片展示(部分图片)

wKioL1Re2ICiL6AQAAhVHpRxlWc887.jpg

wKiom1Re2BvxeUXWAAhjd5UBBfo108.jpg

5、查看下载的图片数量

wKioL1Re2QvDnZb3AAIXXHul8HU186.jpgwKiom1Re2MrAMoPXAAtfpHgkZHU553.jpg


二、爬虫2

1、首先来分析url

第一步:总共有7个页面;

第二步:每个页面有20篇文章

第三步:查看后总共有317篇文章

wKiom1Re2xzwiidxAAZjxM8KAOM147.jpg

wKioL1Re24aQ2iNbAAd97-WqAm4390.jpg

wKiom1Re2yGwofzrAAeL33Kq3ao239.jpg

2、python脚本

脚本的功能:通过给定的url来将这片博客里面的所有文章下载到本地

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
#!/usr/bin/env python
#coding: utf-8
 
import  urllib
import  time
 
list00 = []
i = j = 0
page = 1
 
while  page < 8:
         str =  "http://blog.sina.com.cn/s/articlelist_1191258123_0_%d.html"  %(page)
         content = urllib.urlopen(str). read ()
 
         title = content. find (r "<a title" )
         href  = content. find (r "href=" ,title)
         html  = content. find (r ".html" ,href)
         url = content[href + 6:html + 5]
         urlfilename = url[-26:]
         list00.append(url)
         print i,  url
 
         while  title != -1 and href != -1 and html != -1 and i < 350:
                 title = content. find (r "<a title" ,html)
                 href  = content. find (r "href=" ,title)
                 html  = content. find (r ".html" ,href)
                 url = content[href + 6:html + 5]
                 urlfilename = url[-26:]
                 list00.append(url)
                 i = i + 1
                 print i,  url
         else :
                 print  "Link address Finshed."
 
         print  "This is %s page"  %(page)
         page = page + 1
else :
         print  "spage=" ,list00[50]
         print list00[:51]
         print list00.count( "" )
         print  "All links address Finshed."
 
x = list00.count( '' )
a = 0
while  a < x:
         y1 = list00.index( '' )
         list00.pop(y1)
         print a
         a = a + 1
 
print list00.count( '' )
listcount = len(list00)
 
 
while  j < listcount:
         content = urllib.urlopen(list00[j]). read ()
         open (r "/tmp/hanhan/" +list00[j][-26:], 'a+' ).write(content)
         print  "%2s is finshed."  %(j)
         j = j + 1
         #time.sleep(1)
else :
         print  "Write to file End."

3、下载文章后的截图

wKioL1Re3R3gg6IGAA8dyZrP0U4461.jpg4、从linux下载到windows本地,然后打开查看;如下截图

wKiom1Re3XzBVDbjAAlH2M5t-kI943.jpg












     本文转自zys467754239 51CTO博客,原文链接:http://blog.51cto.com/467754239/1574528,如需转载请自行联系原作者











相关文章
|
2天前
|
数据采集 存储 Java
如何让Python爬虫在遇到异常时继续运行
构建健壮Python爬虫涉及异常处理、代理IP和多线程。通过try/except捕获异常,保证程序在遇到问题时能继续运行。使用代理IP(如亿牛云)防止被目标网站封锁,多线程提升抓取效率。示例代码展示了如何配置代理,设置User-Agent,以及使用SQLite存储数据。通过`fetch_url`函数和`ThreadPoolExecutor`实现抓取与重试机制。
如何让Python爬虫在遇到异常时继续运行
|
10天前
|
机器学习/深度学习 数据采集 数据挖掘
Python实现深度神经网络gcForest(多粒度级联森林)分类模型
Python实现深度神经网络gcForest(多粒度级联森林)分类模型
Python实现深度神经网络gcForest(多粒度级联森林)分类模型
|
10天前
|
机器学习/深度学习 数据采集 算法
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
52 19
|
6天前
|
网络协议 安全 Shell
`nmap`是一个开源的网络扫描工具,用于发现网络上的设备和服务。Python的`python-nmap`库允许我们在Python脚本中直接使用`nmap`的功能。
`nmap`是一个开源的网络扫描工具,用于发现网络上的设备和服务。Python的`python-nmap`库允许我们在Python脚本中直接使用`nmap`的功能。
|
3天前
|
机器学习/深度学习 数据采集 前端开发
网络爬虫开发:JavaScript与Python特性的小差异
我们以前写JavaScript的代码时,在遇到了发送请求时,都是需要去await的。 但是为什么Python代码不需要这样做呢? 这就是因为JavaScript是异步的,Python是同步的。 JavaScript就需要使用关键词await将异步代码块变为同步代码。
|
5天前
|
数据采集 存储 Web App开发
Python-数据爬取(爬虫)
【7月更文挑战第15天】
35 3
|
9天前
|
存储 算法 Python
Python图论实战:从零基础到精通DFS与BFS遍历,轻松玩转复杂网络结构
【7月更文挑战第11天】图论在数据科学中扮演关键角色,用于解决复杂网络问题。Python因其易用性和库支持成为实现图算法的首选。本文通过问答形式介绍DFS和BFS,图是节点和边的数据结构,遍历用于搜索和分析。Python中图可表示为邻接表,DFS用递归遍历,BFS借助队列。DFS适用于深度探索,BFS则用于最短路径。提供的代码示例帮助理解如何在Python中应用这两种遍历算法。开始探索图论,解锁更多技术可能!
23 6
|
10天前
|
机器学习/深度学习 数据采集 监控
Python基于BP神经网络算法实现家用热水器用户行为分析与事件识别
Python基于BP神经网络算法实现家用热水器用户行为分析与事件识别
|
11天前
|
网络协议 安全 Python
python实现对网络流量分析
Python提供多种工具进行网络流量分析,如`pcap`库用于实时捕包,`dpkt`库用于解码数据包,以及`Scapy`库进行高级分析。
|
4天前
|
JSON 数据挖掘 API
在会议系统工程中,Python可以用于多种任务,如网络请求(用于视频会议的连接和会议数据的传输)、数据分析(用于分析会议参与者的行为或会议效果)等。
在会议系统工程中,Python可以用于多种任务,如网络请求(用于视频会议的连接和会议数据的传输)、数据分析(用于分析会议参与者的行为或会议效果)等。