Python网络爬虫之爬取网站图片——urllib库及os库

urllib库与os库

  • 一、如何在Pycharm中导入第三方库
  • 二、urllib库
    • 1、urllib网络访问
    • 2、urllib网络图片爬取
  • 三、os库

如果说强大的标准库奠定了python发展的基石,丰富的第三方库则是python不断发展的保证,随着python的发展一些稳定的第三库被加入到了标准库里面,方便我们的编写代码时的使用,今天主要是对urllib库和os库中一些简单函数的介绍。

其他python文章链接:
链接:
1、 Python基础入门语法
2、 Python爬取网站音乐(待补)
3、 Python爬取网站小说(待补)
4、 Python爬取豆瓣书籍汇总(待补)

一、如何在Pycharm中导入第三方库

打开我们的Pycharm软件,新建一个项目,点击菜单栏第一个File->settings,点击settings之后再点击project下面的project Interpreter。接下来点击Latest version右边的“+”,然后在搜索框中搜索需要安装的第三方库(此处搜索urllib)然后点击界面左下角的Install Package进行安装即可。

二、urllib库

urllib库中提供了一系列用于操作URL的功能,这里先放上urllib的官方文档,方便有需要的可以直接查阅:urllib官方文档。urllib库的主要作用是在爬虫过程中请求打开网站链接,方便我们下一步的数据爬取。

1、urllib网络访问

# 【1】===urllib库的使用===
import urllib.request;
# python2.x
# import urllib,urllib2;
# 【2】===设定访问的目标网址====
url = "https://www.i4.cn/wper_1_0_0_1.html";
# 【3】====开始网络链接====
html = urllib.request.urlopen(url);
# 【4】===读取访问网络返回的数据====
data = html.read();
# print(data);
# 【5】===存储到本地====
file = open("01_urllib爱思助手.html","wb",1);
# 【6】===写入数据===
file.write(data);
# 【7】===关闭文件和网络===
file.close();
html.close();

# ======================urllib常规用法===================================
# 获取访问网络的网址
print("当前访问网络的网址:%s"%html.geturl());
# 获取网络状态的返回码
print("访问网络的状态码:%d"%html.getcode());
# 中文乱码问题
url01 = "http://tieba.baidu.com/f?ie=utf-8&kw=武汉工程大学red_tag=v1087355643";
# 网址的加密
url02 = urllib.request.quote(url01);
print("加密后的乱码网址:%s"%url02);
# 修正中文网址乱码问题
url03 = urllib.request.unquote(url02);
print("生成的网址:%s"%url03)
// An highlighted block
var foo = 'bar';

2、urllib网络图片爬取

获取图片下载地址时用到了re正则表达式库,不懂正则表达式怎么写的朋友可以看:菜鸟教程 | Python正则表达式。这里就不做详细的解释了,可以先在:在线正则表达式测试 中测试图片网址是否提取正确,然后下载。这个网站里也有很多写好了的正则表达式模板,稍作修改即可。

# 【1】===导包===
import urllib.request;
# 导入正则表达式的包
import re
# 【2】===设置目标网址===
url = "https://www.i4.cn/wper_23_0_0_1.html";
# 【3】===检查网络访问状态===
html = urllib.request.urlopen(url);

if html.getcode()==200:
    print("网络访问成功:%d"%html.getcode())
    data = html.read();
    # 【4】===存储到本地===
    file = open("02_urllib爱思助手.html","wb",1);
    file.write(data);
    file.close();

    pass
else:
    print("网络访问失败。。。")
    pass
html.close();
# ================解析网络图片下载============================
# 【5】===创建获取图片的函数===
def Get_data_img(data):
    # 创建一个正则表达式
    r = r'https://d-paper.i4.cn/middle/[^\s]*[.jpg|.JPG]';
    # 创建一个正则表达式的模板
    pat = re.compile(r)
    # 根据正则表达式模板,进行匹配数据
    imgurls = re.findall(pat,str(data));
    # 输出返回数据
    print(imgurls)
    print(len(imgurls))
    # 通过遍历循环下载
    i = 1;
    for urlimg in imgurls:
        print("第%d张图片地址:%s"%(i,urlimg));
        print("开始下载第%d张。。。"%i);
		# 下载图片
        urllib.request.urlretrieve(urlimg,"爱思助手手机壁纸/图片_%d.jpg"%i);
        print("下载成功\n======================")
        i+=1;
        pass

    pass

# 【6】===函数的调用===
Get_data_img(data);

三、os库

os 模块提供了非常丰富的方法用来处理文件和目录。我们主要用它来判断路径下是否存在我们想要存放的文件夹和不存在时新建一个文件夹。具体使用函数参数可查看:Python3 OS 文件/目录方法

import os
# 路径要加转义字符确保不会出现异意
path = "C:\/Users\/Administrator\/Desktop\/Python爬虫"
if not os.path.exists(path):
    print("路径不存在,进行创建")
    os.makedirs(path);
    print("创建成功。")
    pass
else:
    print("文件路径存在")
    pass

你可能感兴趣的:(学习)