python小爬虫

来源:互联网 发布:万字酱油 知乎 编辑:程序博客网 时间:2024/05/21 21:38


今天学习了一个小爬虫,现在来总结一下。


目的:


获取某个网页上的图片


思路:


1.获取该网页的内容


2.在网页的内容中筛选出我们想要的东西


3.进行相对应的操作,例如下载。



实际操作:


1.获取某个网页的内容

import urllib
def getHtml(url)
page = urllib.urlopen(url)
html = page.read()
return html
print getHtml("http://tieba.baidu.com/p/4044308132")


在这里需要用到urllib这个库,所以先对这个库进行导入。

创建一个函数getHtml(url),用于获取网页内容。用urllib.urlopen获取这个文件,url表示路径。并将其赋予给page。

page.read()表示读取这个文件的内容,然后我们再将文件的内容赋予给html。再return html的值

用下图网页作为实验对象。




在对上述的代码进行运行后,我们会获得下方的结果

这就是通过上述代码获得的网页内容。


2.对网页内容进行筛选。

我们是要获取网页中的图片,以jpg图片为例


import reimport urllibdef getHtml(url):    page = urllib.urlopen(url)    html = page.read()    return htmldef getSrc(html):    reImg=r'src="(.+?\.jpg)" pic_ext'    imgList=re.findall(reImg,html)    return imgList    html=getHtml("http://tieba.baidu.com/p/4044308132")print getSrc(html)

因为我们要筛选获取网页中的jpg图片,所以我们要用到正则表达式,所以要导入re库。从上述图片我们发现网页中图片路径的格式为src=“http://...@¥%……#¥.jpg” pic_ext

所以写出我们的正则表达式。然后进行应用,将得到的内容赋予imgList 并进行返回,然后再输出getSrc。

得到下图的内容:


3.接下来进行相应的操作,例如下载


import reimport urllibdef getHtml(url):    page = urllib.urlopen(url)    html = page.read()    return htmldef getSrc(html):    reImg=r'src="(.+?\.jpg)" pic_ext'    imgList=re.findall(reImg,html)    x=0    for img in imgList:        urllib.urlretrieve(img,"%szczc.jpg" % x)        x+=1html=getHtml("http://tieba.baidu.com/p/4044308132")getSrc(html)

通过for循环,使用urllib.urlretrieve()对该网页的每一张jpg图片进行下载。urlretrieve()有两个参数,一个是路径,一个是存储的文件名,这里的话通过for循环,使每次保存的文件名不同,以免覆盖,导致后来下载的文件将之前的文件进行覆盖。

最后下载的文件在该python文件的相同目录下: