用到库 os ,requests, base64
os简单介绍:点这里
requests介绍:点这里
base64介绍:点这里
其中 requests和 base64属于第三方库,需要自己安装
pip 一下就好
重点看一下requests 库的介绍,看上面那篇文章我觉得够了
其中,带参数的url请求,就是相当于打开该网页的一个子网页
然后就是煎蛋网网址:http://jandan.net/ooxx
右键,检查,点到页码看到
点到图片
ok,到时候查找地址的时候就用到这几个,简易的通过字符串查找,不过用正则也行(还不会)
还有注意到
网页的url中表示页数的数字是通过base64的方式进行编码的,所以我们需要在代码中进行转换
上代码 各模块封装
import requests as rs
import os
import base64
def url_open(url):
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'}
respones=rs.get(url,headers=headers)
return respones.content
def get_page(url):
html = url_open(url).decode('utf-8')
a = html.find('current-comment-page')+23
b = html.find(']',a)
return html[a:b]
def get_url(page_num):
targt_num = '20200101-' + str(page_num)
targt_num = base64.b64encode(targt_num.encode('utf-8'))
page_url = 'http://jiandan.net/ooxx/' + str(targt_num,'utf-8')+'#comments'#网页链接
return page_url
def save_image(folder,image_adress):
for each in image_adress:
filename = each.split('/')[-1]
with open(filename,'wb') as f:# 获取的文本实际上是图片的二进制文本
each = 'http:' + each
img = url_open(each)
f.write(img)
def find_images_address(page_url):
html = url_open(page_url).decode('utf-8')
img_addrs = []
a = html.find('img src=')
while a != -1:
b = html.find('.jpg',a,a+255)
if b != -1:
img_addrs.append(html[a+9:b+4])
else:
b = a + 9
a = html.find('img src=',b)
return img_addrs
def downloads(folder="学习资料"):
os.mkdir(folder)
os.chdir(folder)
url='http://jiandan.net/ooxx'
page_num=int(get_page(url))
for i in range(page_num):
page_url=get_url(page_num)
images_address=find_images_address(page_url)#找到图片的地址
save_image(folder, images_address )#存到指定的文件
page_num -= 1
if __name__=='__main__':
downloads()