IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> python爬虫静态网站——图片及保存 -> 正文阅读

[网络协议]python爬虫静态网站——图片及保存

欢迎评论

目标网站:狗图片_狗图片大全_4342张 (天堂图片网)

静态网站

引用库:

import requests #发送请求的
import os #拼接保存文件目录的
from lxml import etree #解析的
from fake_useragent import UserAgent #随机生成user的
import time #不重要自己计时玩的

请求头:

headers = {
    'cookie': 'BAIDU_SSP_lcr=https://www.baidu.com/link?url=ccJ__wOLSIQlB_WtJGI7P3zEmVN-8ZXfDmvnGO5Bh0-Y2pOj8zGXWxb0FzBbZ5QI&wd=&eqid=ea2fb6e2000673510000000361986f47; __yjs_duid=1_1de99d164448e2a51fb1781927e86dad1637379923384; statistics_clientid=me; Hm_lvt_862071acf8e9faf43a13fd4ea795ff8c=1637379924,1637380093; Hm_lvt_a951b469f6e313457f2934c362ed30de=1637380661; Hm_lpvt_a951b469f6e313457f2934c362ed30de=1637380877; Hm_lpvt_c13cf8e9faf62071ac13fd4eafaf1acf=1637381219; Hm_lpvt_862071acf8e9faf43a13fd4ea795ff8c=1637381220',
    'referer': 'Referer: https://www.ivsky.com/tupian/gou_t116/',
    'user-agent':UserAgent().random
}
#不设置请求头,有些基本访问是访问不了的,只是简单的设置

解析网页:?

url = 'https://www.ivsky.com/tupian/gou_t116/'
#要申请的url

url_header = 'https://www.ivsky.com'
#发现这个网页请求下来的url和实际的url缺少前面这一部分
#提前设置,做个拼接

resp = requests.get(url,headers)
#发送请求

html = etree.HTML(resp.text)
#做个解析,以上基本是固定格式,没有原因,语法就是这样的

定位元素:

img_list = html.xpath('/html/body/div[3]/div[2]/ul/li')
#定位到每个图的li标签,因为咱们要的是每一张图
for img in img_list:
    img_net_href = img.xpath('./div/a/@href')[0]
    img_href = url_header+img_net_href
#for循环得到每张图的href属性,再拼接上面的url_header
#得到可以查到图片真实地址的url

#起始网站中图片都是小图,不是我们要下载的
#所以要得到图片的大图链接
#真实电脑需要鼠标点一下图
#跳转到一个新的页面
#需要获得这个页面的url提供给python操作,解析拼接如上

查找jpg实际地址:

respo = requests.get(img_href)
#得到图片的url
img_html = etree.HTML(respo.text)
#解析
title = img_html.xpath('//*[@id="al_tit"]/h1/text()')[0]
img_url = 'http:'+img_html.xpath('//*[@id="imgis"]/@src')[0]
#定位元素获得title文字和图片真实地址的url
#xpath定位得到的都是列表,所以后面加个[0]

保存图片:

res = requests.get(img_url)
#给图片实际地址发送请求
with open(os.path.join('./图片',f'{title}.jpg'),'wb')as fp:
    fp.write(res.content)
#with open()as fp:来保存文件
#我在这个爬虫文件的同目录下创建了一个名叫图片的文件夹
#我们需要把图片保存进去
#用到了os模块拼接
#os.path.join('./图片',f'{title}.jpg')
#得到的结果就是图片文件夹下的名字为刚才获取到的title的.jpg文件
#wb是以二级制写入文件
#res.content是请求回来的二进制内容

完整代码:

import requests
import os
from lxml import etree
from fake_useragent import UserAgent
import time

time1 = time.time()


headers = {
    'cookie': 'BAIDU_SSP_lcr=https://www.baidu.com/link?url=ccJ__wOLSIQlB_WtJGI7P3zEmVN-8ZXfDmvnGO5Bh0-Y2pOj8zGXWxb0FzBbZ5QI&wd=&eqid=ea2fb6e2000673510000000361986f47; __yjs_duid=1_1de99d164448e2a51fb1781927e86dad1637379923384; statistics_clientid=me; Hm_lvt_862071acf8e9faf43a13fd4ea795ff8c=1637379924,1637380093; Hm_lvt_a951b469f6e313457f2934c362ed30de=1637380661; Hm_lpvt_a951b469f6e313457f2934c362ed30de=1637380877; Hm_lpvt_c13cf8e9faf62071ac13fd4eafaf1acf=1637381219; Hm_lpvt_862071acf8e9faf43a13fd4ea795ff8c=1637381220',
    'referer': 'Referer: https://www.ivsky.com/tupian/gou_t116/',
    'user-agent':UserAgent().random
}
url = 'https://www.ivsky.com/tupian/gou_t116/'
url_header = 'https://www.ivsky.com'
resp = requests.get(url,headers)
html = etree.HTML(resp.text)
img_list = html.xpath('/html/body/div[3]/div[2]/ul/li')
for img in img_list:
    img_net_href = img.xpath('./div/a/@href')[0]
    img_href = url_header+img_net_href
    respo = requests.get(img_href)
    img_html = etree.HTML(respo.text)
    title = img_html.xpath('//*[@id="al_tit"]/h1/text()')[0]
    img_url = 'http:'+img_html.xpath('//*[@id="imgis"]/@src')[0]
    res = requests.get(img_url)
    with open(os.path.join('./图片',f'{title}.jpg'),'wb')as fp:
        fp.write(res.content)

time2 = time.time()
time = time2 - time1
print(time)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:42:59  更:2021-11-22 12:44:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:39:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码