Python之网络爬虫

本文介绍了Python初学者如何进行网络爬虫的实践,包括测试版和控制台版本的实现步骤。通过导入所需模块,获取网站源代码,使用正则表达式匹配图片路径,并保存到本地。控制台版本增加了用户交互和网络状况提示,适合在不同环境下运行。
摘要由CSDN通过智能技术生成

前言:2018年,Python语言紧随C语言、java的脚步,被广大IT程序猿所熟知,无论是从入门级选手到专业级数据挖掘、科学计算、图像处理、人工智能,Python 都可以胜任。
最近闲暇之余小编学习了Python中简单的网络爬虫技术来爬取网站图片,现在就来给大家分享一下,以下有两个版本,为测试版和控制台版本(两个版本都做了详细的注释):
测试版:
一、.明确网络爬虫技术的编写步骤:
确定要爬取的网址→ 根据网址获取爬取网站的源代码→用正则表达式配置路径→保存到本地

、开始编写代码
我们先导入两个需要用到的模块

import urllib.request #导入适用于3.0的爬取网页数据的核心模块
import  re #匹配器 (下面用于编译字符串)入代码片

1.输入要爬取的网址

#定义变量path保存网址
path="http://www.budejie.com/"

2.根据网址获取网站源代码

#定义变量content,根据网址获取源代码
content=urllib.request.urlopen(path).read() 
#括号第一个引号是解码(请根据爬取网址的编码格式设定,这里小编爬取网址的编码格式是“UTF-8”) ,第二个是忽略不可解的非法字符
content=content.decode("UTF-8","ignore") 

3.用正则表达式配置匹配的图片路径

#定义一个变量imgRe,保存正则表达式
imgRe=re.compile(r'data-original="(.+?\.jpg)"')
 #从源代码中切出图片路径保存到变量imagePaths中
imagePaths=imgRe.findall(content)

4.保存到本地

#定义一个计数器,根据检测到的图片路径记录图片数量
print("共检测到",imagePaths.__len__(),"张图片")
 #循环爬取图片
 i=0
 for imagePath in imagePaths:
     i+=1
     #爬取的图片加1再加后缀.jsp
     urllib.request.urlretrieve(imagePath,f"F:\\image\\{i}.jpg")
     #注:引号里面手动输入图片保存到本地的路径,然后加上后缀,最后不要忘了加上一个“\”转义符哦 
     print(imagePath, "保存成功")
     print("图片下载完毕")

这是小编运行成功后的样子:
在这里插入图片描述

怎么样,是不是很简单,那么接下来我们看看控(gao)制(pei)版的:

、Python网络爬虫之控制台版本:
定义函数:

#根据控制台输入的网址获取源代码
def getSourceCode(path):
    content=urllib.request.urlopen(path).read()
    # 编解码和忽略不可解的非法字符,注:双引号放入的编码格式请按照爬取网页的编码格式来,小生爬取网页的编码是gb2312
    return content.decode("gb2312","ignore")

def getImagePath(content):
    # 正则表达式(配置匹配的图片路径)
    imgRe=re.compile(r'data-original="(.+?\.jpg)"')
    # 从源代码中切出图片路径
    imagePaths=imgRe.findall(content)
    return  imagePaths

控制台(小编是从工作区间用PowerShell窗口运行的,大家从控制台运行也是没毛病的)

print("***欢迎使用爬虫爬取网页图片***")
#输入的网址放在getSourceCode方法
path=input("请输入要爬取图片的网址:")
print("正在解析网址......")
#调用函数解析网址
content=getSourceCode(path)
print("解析网址成功......")
#读取图片的路径
imagePaths=getImagePath(content)
#检测输出图片的数量
print("共检测到",imagePaths.__len__(),"张图片")
isSure=input("您确定要获取到这些图片吗?Yes/NO:")

输入网址后如果下载时网络不怎么nice,我们就可以向上面一样加上一句温馨提示,代码运行后入下图:
在这里插入图片描述

用户输入选择:

isSure=input("您确定要获取到这些图片吗?Yes/NO:")
if isSure=="Yes":
    savePath=input("请输入保存到本地的盘符:")
    i=0
    for imagePath in imagePaths:
      i+=1
      urllib.request.urlretrieve(imagePath,f"{savePath}\\{i}.jpg")
      print(imagePath,"保存成功")
      print("图片下载完毕")
    else:
        print("欢迎下次使用!")

运营结果如下:
在这里插入图片描述
在这里插入图片描述

注:输入保存路径时可直接从电脑路径中Copy

怎么样,看完注释详细的测试版之后再看控制台版本是不是更好理解呢,快打开电脑敲起来吧 !
结语:
我的第一篇博客,写得可能不是很好,有不对之处,还请各位提出, 希望以后能更好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值