今天我来教大家如何使用爬虫技术爬取网上羞羞哒图片,当然教程不会直接爬那些。没有链接。
我们先来爬取一张图片试试手。
首先要加载网络模块
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])