python爬虫(简单版)

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

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

先上重点代码python

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以后,就获得了页面的全部构成元素了ajax

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

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

 

 

而后上面重点代码里的soup是一个BeautifulSoup对象,是一个第三方的用于html页面内容解析的库,当建立了一个BeautifulSoup对象以后,就能够用这个对象对html的内容进行解析,好比:ide

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

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

import urllib2
from bs4 import BeautifulSoup
def spider_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 in nodes:
        try:
            url_list.add(node['href'])
        except:
            pass
    for url in url_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()
        except Exception as e:
            print(e)
            pass

def mkdir(path):
    # 引入模块
    import os

    # 去除首位空格
    path=path.strip()
    # 去除尾部 \ 符号
    path=path.rstrip("\\")

    # 判断路径是否存在
    # 存在     True
    # 不存在   False
    isExists=os.path.exists(path)
    # 判断结果
    if not isExists:
        # 若是不存在则建立目录
        print path+' 建立成功'
        # 建立目录操做函数
        os.makedirs(path)
        return True
    else:
        # 若是目录存在则不建立,并提示目录已存在
        print path+' 目录已存在'
        return False



if __name__=='__main__':
    url_list = [
        'http://www.tooopen.com/img/90_894.aspx'
    ]
    i = 1
    for url in url_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

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

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

相关文章
相关标签/搜索