有不少小伙伴反应,昨天更新的NASA的源码在运行的时候出错了,出现:
其实小编当时也遇到了这个错误,当时去网上搜了下说是可能会和网络有问题,因为网站本身就是个国外的网站,后来增加了:
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查找元素:
即可推断出标签获取为:
//*[@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文件夹内了。
以上就是今天给大家分享的内容,豆瓣版的NASA源码获取获取请在后台回复:豆瓣生日图片。更多精品教程请关注公众号spiderBy,回复“Python教程”,即可获取*智基础+就业班课程。