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

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

网络爬虫(又被称为网页蜘蛛,网络机器人,在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函数只会在本程序内执行,不会被导入到其他程序中。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。