本片博客用来爬取unsplash里面的图片,主要用到requests库和json库, os库作为辅助,编译软件使用pycharm.
一、
打开unsplash分析网页
很容易分析这个网页时动态网页,而不是静态网页?为什么呢,因为这个网页所有的图片不是一下子出来,他是一组一组的弹出来的,属于典型的动态网页,此外你也可以找找有没有你所要的图片的连接。你会发现根本找不到连接,那么怎么搞,莫慌!!!山人自有招。O(∩_∩)O哈哈~
二、查找图片的链接
按一下F12键,然后点Network,出来Network之后,点击XHR键(这个键属于Network的子文件),你会看到一下界面,
然后重点来了,记一下要考的 ,向下滑动页面,你就会发现页面多了点东西,多啥了你自己瞅啊,瞅我干啥,瞅自己的网页。
你随便点击一个,你会发现一个列表,仔细寻找列表里面的东西,发没发现网址,如果没发现,那么只能说你只适合插秧,对了别踩苗。
你在仔细找找,看没看见raw"https://images.unsplash.com/photo-1551877521-23bf8ef34f10?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9",这个东西你打开看看,呀,amazing。
图片大概知道在哪了, 那么开始盘它了。
三、一组图片下载
怎么下载一组图片呢?
还是先回到咱们一开始找到连接的位置
右键点击photo…会出现一个cut键,点击cut键,然后点击第一个。
import requests
import os
from bs4 import BeautifulSoup
import re
import bs4
import json
url = "https://unsplash.com/napi/photos?page=5&per_page=12"
def getHTML(url):
r = requests.get(url)
jd = json.loads(r.text)//强制转化为字典格式
list = []
for i in jd:
t = i['urls']["raw"]
list.append(t)
root = "D://Pic//"
count = 1
for i in list:
print(i)
path = root + str(count) + '.jpg'
count = count + 1
if not os.path.exists(root):
os.mkdir(root)
if not os.path.exists(path):
r = requests.get(i)
with open(path, 'wb') as f:
f.write(r.content)
getHTML(url)
四、多组数据爬取
再复制一组数据,对比两组数据的区别
发现基本上一样就是page=的数值一样,然后通过这个特点咱们爬取多组数据,爬取3组吧,因为这个网站比较慢,我也不知道因为什么。
import requests
import os
from bs4 import BeautifulSoup
import re
import bs4
import json
url = "https://unsplash.com/napi/photos?page="
base = "&per_page=12"
def getHTML(url):
r = requests.get(url)
jd = json.loads(r.text)
list = []
for i in jd:
t = i['urls']["raw"]
list.append(t)
root = "D://Pic//"
global count
for i in list:
print(i)
path = root + str(count) + '.jpg'
count = count + 1
if not os.path.exists(root):
os.mkdir(root)
if not os.path.exists(path):
r = requests.get(i)
with open(path, 'wb') as f:
f.write(r.content)
count = 0
for i in range(1,3):
u = url + str(i)+base
print(u)
getHTML(u)
结果: