Python 实现简单的网络抓取图片

使用Python实现简单的网页图片爬取

使用的模块

import requests #requests模块是第三方模块,需要自己另行安装,功能非常强大,使用Requests 发送网络请求非常方便

requests 安装

在终端运行如下代码即可

pip install requests

requests简单的使用

在这里不深入讲述requests的使用,只是将本项目中用到的简单讲一下,但是requests的强大之处远不止这些。

import requests #导入requests模块
r=requests.get(url) #获取网页,url为目标网页链接
#这里得到了一个名为r的response对象,可以对它进行进一步的操作
r.text 
r.encoding
r.content

re模块 正则表达式

正则表达式是网络爬取非常重要以及有效的工具
有了以上两个模块,爬取图片将非常有效

爬取实例

天堂图片网为例,爬取该网页上燕窝的图片
直接上代码
如下

#!/usr/bin/python 
#coding:utf-8

import urllib2 #也可以用urllib2.urlopen
import sys
import re
import requests

#获取网页源代码

def get_httpdoc(url):
    r=requests.get(url)
    http_doc=r.text
    return http_doc

#解析源代码,获取链接中高清图片链接

def jiexi_url(http_doc):
    tem_img_url=re.findall('/tupian/yanwo_v43788/pic_\d{6}.html',http_doc)
    imgurl=[]
    for img in tem_img_url:
        new_img = 'http://www.ivsky.com'+img #补全图片的链接
        imgurl.append(new_img)
        img_url=list(set(imgurl))
    return img_url

#从高清图片链接中获取图片地址
def get_HDurl(img_url):
    HD_url=[]
    for l in img_url:
        new_ldoc=get_httpdoc(l)
        try:
            tem_l=re.findall('http://img.ivsky.com/img/tupian/pre/201709/17/yanwo-{0,1}\d{0,3}.jpg',new_ldoc)[0]
        except Exception , e:
            pass
        HD_url.append(tem_l)
    return HD_url


#下载高清图片


def download(HDurl):
    print HDurl
    r=requests.get(HDurl)
    fd=r.content
    filename = HDurl.rsplit('/',1)[-1]
    fd1=open(filename,'w+')
    fd1.write(fd)
    fd1.close()

url='http://www.ivsky.com/tupian/yanwo_v43788/'
http_doc = get_httpdoc(url) #获取网页源代码
img_url = jiexi_url(http_doc)
print img_url
HD_url = get_HDurl(img_url)  #获取高清图片的链接
print HD_url

import threading #引入多进程

threads=[]
for l in HD_url:
    t=threading.Thread(target=download,args=(l,))
    threads.append(t)
for t in threads:
    t.start()
for t in threads:
    t.join()

上面还引入的多进程,下载图片的速度快的666

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值