python爬虫简单_python爬虫(简单版)

本文介绍了如何使用Python的urllib2库获取网页内容,配合BeautifulSoup解析HTML,抓取风景图片的过程。作者详细展示了从打开URL、读取内容、解析页面元素到保存图片的基本步骤,以及应对可能遇到的反爬虫问题的方法。
摘要由CSDN通过智能技术生成

学过python的帅哥都知道,爬虫是python的非常好玩的东西,而且python自带urllib、urllib2、requests等的库,为爬虫的开发提供大大的方便。

这次我要用urllib2,爬一堆风景图片。

先上重点代码

1 response =urllib2.urlopen(url).read()2 soup =BeautifulSoup(3 response, #html字符串

4 'html.parser', #html解析器

5 from_encoding='utf-8' #字符编码

6 )

其中,urlopen就顾名思义了,可以简单理解为打开一个url,然后获得该URL相对应的东西在python里的对象,然后通过read之后,就得到了页面的所有构成元素了

1 if __name__=='__main__':2 s = urllib2.urlopen('http://www.baidu.com/')3 print(s.read(100))

read可以传参数,在这里是读取100个字符,结果如下:

756684-20160124125954656-2106991601.png

然后上面重点代码里的soup是一个BeautifulSoup对象,是一个第三方的用于html页面内容解析的库,当创建了一个BeautifulSoup对象之后,就可以用这个对象对html的内容进行解析,比如:

1 attr ={2 'class':'pic',3 }4 nodes = soup.find_all('a',attr)

find_all()函数是查找所有符合参数条件的元素,上面的代码就是查找所有类名为pic的a元素,除了find_all之外,还有一个find元素,是查找符合条件的第一个元素,知道这两个函数之后,已经可以爬东西了。

importurllib2from bs4 importBeautifulSoupdefspider_image(url,pre_filename):

response=urllib2.urlopen(url).read()

soup=BeautifulSoup(

response,#html字符串

'html.parser', #html解析器

from_encoding='utf-8' #字符编码

)

attr={'class':'pic',#'page':'2'

}

nodes= soup.find_all('a',attr)

url_list=set()for node innodes:try:

url_list.add(node['href'])except:pass

for url inurl_list:

img_html=urllib2.urlopen(url).read()

soup=BeautifulSoup(

img_html,#html字符串

'html.parser', #html解析器

from_encoding='utf-8' #字符编码

)

img_url= soup.find('img',id="imgView")

img_name= img_url['alt']try:

img= urllib2.urlopen(img_url['src']).read()print(u'正在下载图片:'+img_name)

fout= open(pre_filename+img_name+'.jpg','wb')

fout.write(img)

fout.close()exceptException as e:print(e)pass

defmkdir(path):#引入模块

importos#去除首位空格

path=path.strip()#去除尾部 \ 符号

path=path.rstrip("\\")#判断路径是否存在

#存在 True

#不存在 False

isExists=os.path.exists(path)#判断结果

if notisExists:#如果不存在则创建目录

print path+'创建成功'

#创建目录操作函数

os.makedirs(path)returnTrueelse:#如果目录存在则不创建,并提示目录已存在

print path+'目录已存在'

returnFalseif __name__=='__main__':

url_list=['http://www.tooopen.com/img/90_894.aspx']

i= 1

for url inurl_list:print(u'现在开始下载第'+str(i)+u'个网站的图片')#定义要创建的目录

mkpath='F:\\spider'+str(i)#调用函数

mkdir(mkpath)

spider_image(url,'F://spider//spider_image'+str(i)+'//')

i= i + 1

爬图片的话,其实就是读取到图片之后,转成二进制数据之后,写入文件就行了,然后运行就可以了,然后就看到一堆图片在目录里

756684-20160124131955359-754910024.png

当然,这算是最基础,什么情况都没遇到,超顺利,随着你想爬更多东西,会发现有很多反爬虫的东西,比如cookie,验证码,ajax动态加载之类的,遇到这些东西,要爬的话,需要做更多更多的工作,当然,这么好玩的东西,做再多工作都是值得的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值