码迷,mamicode.com
首页 > 编程语言 > 详细

用Python写一个最简单的网络爬虫

时间:2015-02-25 06:57:01      阅读:709      评论:0      收藏:0      [点我收藏+]

标签:

什么是网络爬虫?这是百度百科的解释:

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,
自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫。

爬虫可以做什么?爬虫可以帮助我们在茫茫互联网中爬取我们需要的特定数据,这个特定数据可以是任何想获得的数据。

爬虫是一个让人热血的话题,因为当你在写爬虫的时候,你会感觉到自己是在做一件很NB的事,而每当写出一个爬虫,就会在此基础上不断尝试写出更NB的爬虫,有了NB的爬虫,就可以做出更NB的事,并以此不断前行,这就是爬虫的魅力。

自学Python之后,用Python写的第一个程序就是一个爬虫,一个最简单的爬虫,可以爬取一个网页里面的所有图片。

import urllib
import re

html = urllib.urlopen(‘http://tieba.baidu.com/p/2460150866‘).read()
reg = r‘src="(.+?\.jpg)" pic_ext‘
img_re = re.compile(reg)
img_list = re.findall(img_re,html)
x = 0
for img_url in img_list:
urllib.urlretrieve(img_url,"D:\\Python\\picture\\%s.jpg" % x)
x+=1

运行之后的结果:

技术分享

这个爬虫简单到只有10行代码,但它可以以很快的速度将http://tieba.baidu.com/p/2460150866里面的所有图片下载下来。这个简单的爬虫只可以把一个网页的图片下载下来,而我想要写一个爬虫可以把整个网站的图片下载下来,或者说,我写一个爬虫我只要输入一个变量:url,它就可以把整个网站内的所有图片下载下来。话说,没有做不到,就怕没想法,之后写出的爬虫都是再此基础上不断的加以改进。如果对网页有过研究,就会发现网页有很多种,有静态网页,有动态网页,爬虫爬取静态网页很容易,而爬取动态网页就有些困难,还有不同网页的结构都不一样,爬取的方法也不尽相同,想要克服这些困难,就必须使自己的爬虫更加强大。

同样的程序,如果现在来写,我会写成另外一种形式,函数式编程,将所有的代码除了全局变量都写在函数或者类里面,这样代码会很整洁,不容易出错,而程序出错可以很快的找出错误的位置。

import urllib
import re

url = ‘http://tieba.baidu.com/p/2460150866‘

def getHtml(url):
html = urllib.urlopen(url).read()
return html

def getImage(html):
reg = r‘src="(.+?\.jpg)" pic_ext‘
img_re = re.compile(reg)
img_list = re.findall(img_re,html)
return img_list

def download(img_list):
x = 0
for img_url in img_list:
urllib.urlretrieve(img_url,"D:\\Python\\picture\\%s.jpg" % x)
x+=1

def main():
html = getHtml(url)
img_list = getImage(html)
download(img_list)

if __name__ == ‘__main__‘:
main()

if __name__ == ‘__main__’: 的意思是,main函数只会在本程序内执行,不会被导入到其他程序中。

用Python写一个最简单的网络爬虫

标签:

原文地址:http://www.cnblogs.com/pylab/p/4299104.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!