第一个python爬虫

来源:互联网 发布:淘宝怎么出售二手 编辑:程序博客网 时间:2024/06/05 17:54

这里写图片描述
几乎每一个男生的第一个爬虫都是爬妹子的图片的
这里写图片描述
写代码之前要仔细分析一下网页的源码。
可以看到,图片的URL前面都有 imgclass=”BDE_Image”pic_type=”0”width=”…”height=”…”
,之后就是src =” “,里面的内容就是图片的URL,点击可以查看图片。而我们需要的就是 img class=”BDE_Image”和 src=” ” .

写代码的时候需要导入urllib和BeautifulSoup这两个模块。一开始没学BeautifulSoup的时候,还是有点犯难的。因为urllib和re这两个模块用正则匹配式来抓取,在width和height这两个属性的时候感觉下不了手(可能我不知道,我是新手,拜托各位dalao勿喷)。

#-*-coding:utf-8-*-from bs4 import BeautifulSoupimport urllibdef get_content(url):    html = urllib.urlopen(url)    content = html.read()    html.close()    return contentdef callback(a,b,c):    down_progress = a*b*100/c    if down_progress > 100:            down_progress = 100    print "%.2f%%" %down_progress,    if down_progress == 100:    print '\n'def get_image(info):    soup = BeautifulSoup(info,"html5lib")    all_img = soup.find_all('img',class_ = "BDE_Image")    sum = 0    for img in all_img:            global i             i = sum            print '%s.jpg  ' %i            urllib.urlretrieve(img['src'],                "E:\\Picture\\%s.jpg" %i,callback)            sum += 1url = 'https://tieba.baidu.com/p/3697059303'info = get_content(url)get_image(info)

这是源码,加了一个显示下载进度的小功能。

def get_content(url):    html = urllib.urlopen(url)    content = html.read()    html.close()    return content

这个函数是读取传入的url,将网页的源代码读取进来

def callback(a,b,c):    down_progress = a*b*100/c    if down_progress > 100:        down_progress = 100    print "%.2f%%" %down_progress,    if down_progress == 100:        print '\n'

这个函数是实现下载进度的,要传入三个参数。下载时数据被分为几个数据块,a是当前数据块的第几个数,b是每个数据块的大小,c是总数据块的大小。down_progress是下载进度,当大于100%的时候就要使它等于100%。
这里写图片描述
上面就是下载一个网页时a,b,c的数据。

def get_image(info):    soup = BeautifulSoup(info,"html5lib")    all_img = soup.find_all('img',class_ = "BDE_Image")sum = 0    for img in all_img:        i = sum        print '%s.jpg  ' %i        urllib.urlretrieve(img['src'],            "E:\\Picture\\%s.jpg" %i,callback)        sum += 1

soup= BeautifulSoup(info,”html5lib”),这句代码就是把一个Beautifuls对象实例化,然后传入info(html的头部信息)和html5lib解释器(这个BeautifulSoup的帮助文档上有)。之前我看教程的时候他没有传入html5lib解释器,后来百度才知道,但是很奇怪教程能够运行,但我却报错了,估计是版本问题吧。

all_img = soup.find_all(‘img’,class_ = “BDE_Image”),这句代码就是调用soup.fing_all方法,查找所有的传入的正则,然后返回

原创粉丝点击