python 爬取图片

今天我来教大家如何使用爬虫技术爬取网上羞羞哒图片,当然教程不会直接爬那些。没有链接。

 

我们先来爬取一张图片试试手。

首先要加载网络模块

import requests

 

从名字看 已经很好理解了。

我们主要用到的是

html = requests.get(url,headers = header)

 

注意到里面有两个参数,

第一个参数自然是网络地址,第二个参数就是网络传输的头数据。

为什么要头数据呢?

如果我们直接申请请求,有些网站有反爬虫的设置,就会断开连接。

而头则是为了让服务器误判请求是浏览器。

  f = open(R'd:\\'+file_name,'wb')

    f.write(html.content)

    f.close()

然后就是保存图片

这一步没有什么需要讲解的。

废话不多说 现在简单试试效果,附上源码

#coding=utf-8

 

import requests

 

url = 'http://**********'

header = {

        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.2107.204 Safari/537.36'}

 

html = requests.get(url,headers = header)

 

file_name = 'test.jpg'

 

#图片不是文本文件,以二进制格式写入,所以是html.content

f = open(R'd:\\'+file_name,'wb')

f.write(html.content)

f.close()

 

如果没有意外的话 你的目录下就有

 

Ok,那么我们进行下一步,如何批量爬取一个网站的图片呢?

关键是就是如何获取一个网站的图片列表。

这时候我们就要用到库

from bs4 import BeautifulSoup

 

传入一个网址

mess = BeautifulSoup(html.text,"html.parser")

 

返回文本的数据。

查找所有img属性的图片

pic_url = mess.find_all('img')

 

然后一个循环下载同上

for i in range(len(pic_url)):

    html2 = requests.get(pic_url[i]['src'],headers = header)

    #图片不是文本文件,以二进制格式写入,所以是html.content

    f = open(R'd:\\%stest.jpg' % i,'wb')

    f.write(html2.content)

    f.close()

print('all %s in '% i)

到此一个下载图片的简单爬虫就解决了

 

补充一点 有些中文网站爬取会乱码是因为网站的编码不是utf8 转一下格式就好了

title.text.encode('ISO-8859-1').decode(requests.utils.get_encodings_from_content(html.text)[0])

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值