python爬虫系列(4.5-使用urllib模块方式下载图片)

news/2024/7/19 10:44:32 标签: 爬虫, python, 操作系统

一、回顾urllib包中下载图片的方式



1、urlretrieve下载文件

from urllib import request

if __name__ == "__main__":

# 下载整个网页

request.urlretrieve('http://www.baidu.com', 'baidu.html')

# 下载图片

request.urlretrieve('http://www.baidu.com/img/bd_logo1.png', 'baidu.png')

二、下载图片代码

import os

import shutil

from urllib import request

import requests

from lxml import etree

class DownImage(object):

"""

创建一个下载图片的类

"""

def __init__(self):

self.urls = ['http://python.jobbole.com/category/guide/page/{0}/'.format(x) for x in range(2)]

self.headers = {

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36',

}

@property

def create_dir(self):

"""

定义创建一个文件夹的方法(有就删除没用就删除)

:return:

"""

path = os.path.join(os.path.dirname(__file__), 'jobbole')

if os.path.exists(path):

shutil.rmtree(path)

else:

os.makedirs(path)

return path

@property

def get_html(self):

"""

请求页面,返回标题及图片的url地址

:return:

"""

img_list = []

for item in self.urls:

response = requests.get(url=item, headers=self.headers)

if response.status_code == 200:

html = etree.HTML(response.text)

img_urls = html.xpath('//div[@class="post floated-thumb"]')

for img in img_urls:

url = img.xpath('./div[@class="post-thumb"]//img/@src')[0]

img_list.append(url)

print(img_list)

return img_list

def main(self):

"""

定义下载图片的

:return:

"""

path = self.create_dir

if os.path.exists(path):

for img_url in self.get_html:

img_name = img_url.rsplit('/')[-1]

print(img_url)

request.urlretrieve(img_url, os.path.join(path, img_name))

if __name__ == '__main__':

down_image = DownImage()

down_image.main()


转载于:https://juejin.im/post/5be57c55f265da613c094fdb


http://www.niftyadmin.cn/n/1378485.html

相关文章

Linux中的变量【1】预定义变量

Linux中有四种类型的变量:1 预定义变量 2 位置参数变量 3 环境变量 4 自定义变量$? 最后一次执行的命令的返回状态。0表示正确,非0表示错误。 > ls > echo $? > lsaaa > echo $?$$当前进程的进程号$!后台运行的最后一个进程的进程号 #!bi…

浏览器自动化的一些体会5 webBrowser控件之winform和webBrowser的交互

从winform访问webBrowser,大致就是利用webBrowser提供的解析dom的方法以及用InvokeScript方法执行javascript。这个相对比较简单。 从webBrowser访问winform,归纳出来大致4种办法: 1.利用webBrowser的Navigating事件 网页里的javascript代码&…

w10电脑c盘满了怎么清理_电脑C盘爆满,怎么清理最高效?

你的电脑C盘还剩下多少内存容量?大部分电脑用户,都会遇到C盘不够用的问题。无论给 C 盘分配多少空间,时间稍长,它总能被系统或者各种软件占满。比如系统还原文件、虚拟内存、休眠分页文件、临时解压文件……别看新电脑系统只占用十…

java的内存管理 对象的分配与释放

分配 程序员通过new为每个对象申请内存空间(基本类型除外),所有对象都在堆中分配空间;释放:对象的释放是由垃圾回收机制决定和执行的。 Java内存分为两种:栈内存和堆内存 (1)在函数中…

Codeforces Round #371 (Div. 2) - B

题目链接:http://codeforces.com/contest/714/problem/B 题意:给定一个长度为N的初始序列,然后问是否能找到一个值x,然后使得序列的每个元素x/-x/不变,最后把序列变成各个元素都相等(序列每个元素只能进行操作一次) 思…

做自适应网页

1.需求: 接到的需求是做一个官网,同一个网址,在PC端和移动端显示不同,2套并不是简单的隐藏显示的差别。2.想法: 最先想到的是css3的媒体查询 media-screen 控制在不同尺寸下显示。这里说个题外话,css中的像…

git解决冲突 ios_听说你还在用 Git 命令解决代码冲突?

许多开发者在使用 Git 的时候会遇到代码冲突的情况,当两名开发者先后往同一个分支发出合并请求,或者多个分支的代码合并到一个分支时,代码冲突就会出现,进而引起分支无法自动合并的问题。这时,我们一般的解决流程是&am…