首页 > 编程语言 >lxml案例~豆瓣版生日星空图片下载的源码

lxml案例~豆瓣版生日星空图片下载的源码

时间:2022-12-28 17:35:59浏览次数:68  
标签:album douban www lxml res 图片下载 源码 div com

有不少小伙伴反应,昨天更新的NASA的源码在运行的时候出错了,出现:

lxml案例~豆瓣版生日星空图片下载的源码_ide

其实小编当时也遇到了这个错误,当时去网上搜了下说是可能会和网络有问题,因为网站本身就是个国外的网站,后来增加了:

time.sleep(5)

可以暂时性的给解决了,但是在反复执行的时候还是存在上述问题,因此今天找了版替代的代码,爬取豆瓣上的图片集合。

首先让我们输入链接:

​https://www.douban.com/photos/album/1872547715/​

然后点击第二页,第三页,第四页,链接如下:

​https://www.douban.com/photos/album/1872547715/?m_start=18​

-------------------------------------------

​https://www.douban.com/photos/album/1872547715/?m_start=36​

-------------------------------------------

​https://www.douban.com/photos/album/1872547715/?m_start=54​

点到最后一页我们发现链接为:

​https://www.douban.com/photos/album/1872547715/?m_start=360​

从上可以推断出链接的地址规律为

​https://www.douban.com/photos/album/1872547715/?m_start=(步长18)​

那么可以推断出具体的链接地址为:

后面的参数我们可以写成:range(0,361,18),

链接分析完毕,我们利用lxml查找元素:

lxml案例~豆瓣版生日星空图片下载的源码_创建目录_02

即可推断出标签获取为:

//*[@id="content"]/div[3]/div[1]/div[2]/div/a/img/@src

图片的名称同理可得:

//*[@id="content"]/div[3]/div[1]/div[2]/div/a/@title


接下来让我们进入编码环节:

import requests
from lxml import etree
import os

for i in range(0,361,18):
#按照0 18 36 生成0-361
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
} #设置伪装请求头
url = "https://www.douban.com/photos/album/1872547715/?m_start=" + str(i) #进行网址拼接
res = requests.get(url,headers=headers).text #获得网页数据的文本信息
res_xpath = etree.HTML(res) #转换为xpath格式
pic_urls = res_xpath.xpath('//*[@id="content"]/div[3]/div[1]/div[2]/div/a/img/@src') #获得图片网址
titles = res_xpath.xpath('//*[@id="content"]/div[3]/div[1]/div[2]/div/a/@title') #获得图片对应的日期
# print(pic_urls)
# print(titles)
for pic_url,title in zip(pic_urls,titles): #依次循环图片网址和对于日期
res = requests.get(pic_url,headers=headers).content #获得网址的二进制数据
dir_name = "birthday"
isExists = os.path.exists(dir_name)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(dir_name)
with open (dir_name+"/"+title+".jpg","wb") as f: #新建一个jpg文件,用日期命名
f.write(res) #写入二进制数据
print("下载成功!") #保存完成!




右击运行,图片就下载在当前的birthday文件夹内了。

lxml案例~豆瓣版生日星空图片下载的源码_xml_03

以上就是今天给大家分享的内容,豆瓣版的NASA源码获取获取请在后台回复:豆瓣生日图片。更多精品教程请关注公众号spiderBy,回复“Python教程”,即可获取*智基础+就业班课程。


标签:album,douban,www,lxml,res,图片下载,源码,div,com
From: https://blog.51cto.com/u_15924937/5975832

相关文章