社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

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

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

在这里插入图片描述
三:按下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
 
441 次点击