第一个python爬虫

这里写图片描述
几乎每一个男生的第一个爬虫都是爬妹子的图片的
这里写图片描述
写代码之前要仔细分析一下网页的源码。
可以看到,图片的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 BeautifulSoup
import urllib
def get_content(url):
    html = urllib.urlopen(url)
    content = html.read()
    html.close()
    return content

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'

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 += 1

url = '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方法,查找所有的传入的正则,然后返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值