python3爬虫爬取网页图片简单示例

   本人也是刚刚开始学习python的爬虫技术,然后本来想在网上找点教程来看看,谁知道一搜索,大部分的都是用python2来写的,新手嘛,一般都喜欢装新版本。于是我也就写一个python3简单的爬虫,爬虫一下贴吧的图片吧。话不多说,我们开始。

首先简单来说说一下知识。

一、什么是爬虫?

网页上面采集数据

二、学习爬虫有什么作用?

做案例分析,做数据分析,分析网页结构.......

三、爬虫环境

需求:python3x  pycharm

模块:urllib 、urllib2、bs4、re

 

四、爬虫思路:

1.      打开网页,获取源码。

*由于多人同时爬虫某个网站时候,会造成数据冗余,网站崩溃,所以一些网站是禁止爬虫的,会返回403拒绝访问的错误信息。----获取不到想要的内容/请求失败/IP容易被封……..等

*解决办法:伪装——不告诉网站我是一个脚本,告诉它我是一个浏览器。(加上随便一个浏览器的头部信息,伪装成浏览器),由于是简单例子,那我们就不搞这些骚操作了。

2.     获取图片

*Find函数 :只去找第一个目标,查询一次

*Find_all函数: 找到所有的相同的目标。

这里可能有一个解析器的问题,我们也不说了,出问题的同学百度一堆解决办法。

3.      保存图片地址与下载图片

*a.使用urlib---urlretrieve下载(保存位置:如果保存在跟*.py文件同一个地方,那么只需要文件夹名称即可,如果是其他地方,那么得写绝对路径。)

算了,不说那么多废话,既然是个简单例子,那我就直接贴代码吧。相信也没多少人呢看不懂。

提一句:用BeautifulSoup 就可以不用正则;爬虫用正则,Bs4, xpath三种 选择一个就好。当然也可以混合使用,也还有其他种。

爬取地址:http://tieba.baidu.com/p/3840085725

百度贴吧的壁纸图片。

 

代码如下:

import urllib.request
import re
import os
import urllib

#!/usr/bin/python3

import re
import os
import urllib.request
import urllib

#根据给定的网址来获取网页详细信息,得到的html就是网页的源代码
def getHtml(url):
    page = urllib.request.urlopen(url)
    html = page.read()
    return html.decode('UTF-8')

def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre = re.compile(reg) #转换成一个正则对象
    imglist = imgre.findall(html) #表示在整个网页中过滤出所有图片的地址,放在imglist中
    print("====图片的地址=====",imglist)

    x = 0 #声明一个变量赋值
    path = r'H:/python lianxi/zout_pc5/test' #设置保存地址

    if not os.path.isdir(path):
        os.makedirs(path) # 将图片保存到文件夹,没有则创建

    paths = path+'/'
    print(paths)
    for imgurl in imglist:
        urllib.request.urlretrieve(imgurl,'{0}{1}.jpg'.format(paths,x)) #打开imglist,下载图片保存在本地,
        x = x + 1
    print('图片已开始下载,注意查看文件夹')
    return imglist


html = getHtml("http://tieba.baidu.com/p/3840085725") #获取该网址网页的源代码
print(getImg(html)) #从网页源代码中分析并下载保存图片

 

最后效果如图:

好了,教程到这里就结束了。

参考地址:https://my.oschina.net/zouqxb/blog/1553586

(ps:对于python本人也是新手,文章有任何错误请多多包涵)

 

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖一点雨

原创不易,鼓励鼓励~~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值