Python学习:使用selenium和requests爬取网页照片

从网页爬取照片基本上分为以下几步:

1、使用requests请求网络地址;

2、使用headers进行伪装;

3、使用selenium模块中的find_elements对目标元素进行定位;

4、下载图片

5、保存图片

1、先把包给导进来

import requests
from selenium.webdriver import Chorme
import os

2、发送请求

def get_picture(url):
    #requests模块
    header={
        'user - agent': 'Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 108.0.0.0Safari / 537.36'
    }  #伪装,给网站一种正常访问的感觉,不觉得是爬虫在爬取
    repos=requests.get(url,headers=header)
    repos.encoding='utf-8'  #防止汉字出现乱码
    repos_content=repos.content
    #selenium模块
    web=Chrome()
    web.get(url)
    web.implicitly_wait(5)  #隐式等待,可以缓解网页加载不出来,可以给网页一个缓冲的时间
    
    

3、使用find_elements对目标位置进行定位

li=web.find_elements(By.CSS_SELECTOR,'body .Clbc_top .taotu-main>ul>li')

定位准备只需要三步,第一步选中所选的照片->Copy selector->ctrl+F->粘贴进去可以看到是1 of 99,这个就是我们想要的那个CSS selector值了

4、创建文件来保存我们所要的图片:

    if not os.path.exists('./唯美图片'):
        os.mkdir('./唯美图片')

然后再进行循环:

    for img in li:
        #这块需要注意,因为是相对路径,所以必须使用By_xpath
        src=img.find_element(By.XPATH,'./a/img').get_attribute('src')  
        #注意照片的格式,不能带逗号、空格等其他符号
        name=img.find_element(By.XPATH,'./a/img').get_attribute('alt').split(',')[0].split(' ')[0]+'.jpg'   
        

5、保存

        #这里是requests和selenium的结合体,content可以将字符串转化为图片、视频等形式
        data=requests.get(url=src,headers=header).content  
        #print(data)
        path="唯美图片/"+name  #设定接收目录
        with open(path, 'wb') as f:  #保存
            f.write(data)
            print(name,'下载成功!!!')

    web.close()

6、因为以上包装成一个函数形式了,所以再加入主函数

if __name__=='__main__':
    url='https://www.umei.cc/bizhitupian/'
    get_picture(url)

7、输出结果

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值