Py学习  »  Python

python爬虫之爬取壁纸(新手入门级)

白胡子是这个世界上最猛的男人 • 3 年前 • 392 次点击  

一:首先选取一个网站,这里我们选择了一个壁纸网站
二:进入网站,我们可以看到很多图片放在一页里

在这里插入图片描述
三:按下F12开发者工具,点击Elments查看网页的代码
在这里插入图片描述
四:按住左上角箭头,并点击网页中的图片找到图片所在代码的地方
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
五:知道这些后我们可以开始进行代码填写了
1.首先我们需要使用的是爬虫的常见库requests来获取HTML网页的代码
下面展示一些 内联代码片

import requests
url = 'https://www.h128.com/pc/anime/0/2/1920x1080/t/1.html' #网页的网址
headers = {
        "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
} #加入请求头
r = requests.get(url,headers = headers) #get
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.获得了HTML网页的代码后,我们要想方法去获得图片所在位置,这时候我们使用我们的第二个库,python自带的re库(,也就是我们所说的正则表达式)中的findall函数来获取图片所在位置,就是从一群字符串中匹配你想要的字符串,从上图可以知道我们想要的图片位置在一个src标签里,则:
下面展示一些 内联代码片

a = re.findall('<img src="https:(.*?)" alt',r.text) #(.*?)表示任意的字符串
  • 1

让我们来看看返回的值是什么
在这里插入图片描述
我们发现爬取到的并不是图片,所以我们回过头看发现原来的图片前面有https:
之后我们加入代码

 x = 'https:' + i
  • 1

在这里插入图片描述
六:最后我们把图片爬取到电脑上

  r = requests.get(url,headers = headers)
    root = "D://pics1//"
    path = root + url.split('?')[0].split('/')[-1] #图片的名字更改
    with open(path, 'wb') as f:
        f.write(r.content)
        f.close()
        print("文件已保存成功")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

看看下载的图片
在这里插入图片描述

在这里插入图片描述
发现图片的规格不是原图,比较原图
在这里插入图片描述 下载的图

在这里插入图片描述 原图
发现w和h后面的参数有所差异,使用replace函数进行更改,最后运行代码查看
在这里插入图片描述
最后爬虫完毕,这次的爬虫只能爬取一页,如果爬取多页,可以用列表存取,如果要效率更高,到后来可以使用多线程爬虫。
最后上完整代码
下面展示一些 内联代码片

import requests
import re
url = 'https://www.h128.com/pc/anime/0/2/1920x1080/t/1.html' #网页的网址

headers = {
        "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
} #加入请求头
r = requests.get(url,headers = headers) #get
r.raise_for_status()
r.encoding = r.apparent_encoding
#print(r.text)
a = re.findall('<img src="https:(.*?)" alt',r.text) #(.*?)表示任意的字符串
for i in a:
    #print(i)
    url = 'https:' + i
    url = url.replace('w_487', 'w_1421').replace('h_274', 'h_799')
    #print(x)
    r = requests.get(url,headers = headers)
    root = "D://pics1//"#保存在D盘的pics1里,这里要提前建好文件夹
    path = root + url.split('?')[0].split('/')[-1] #图片的名字更改
    with open(path, 'wb') as f:
        f.write(r.content)
        f.close()
        print("文件已保存成功")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/72470
 
392 次点击