一、基本语法
2、xpath下载
下载站长之家指定页数图片
您当前位置:站长素材>>图片>>人物图片>>性感美女图片
# 问题:下载图片 是一页一页的下载
# 首先要确定每一页的 url
# 其次 下载图片我们需要知道它在本页面中的位置
# 思路: 首先确定每一页的url
# 获取源代码
# 从源代码中获取我们要下载的图片的url
# 最后使用urllib.request.urlretrieve(url=url,filename=‘’)方法 下载
#https://sc.chinaz.com/tupian/xingganmeinvtupian.html 1页
#https://sc.chinaz.com/tupian/xingganmeinvtupian_2.html 2页
#https://sc.chinaz.com/tupian/xingganmeinvtupian_3.html 3页
#观察可得 除了第一页 之后的url和页码相同
import urllib.request
#获取页面源码
def get_request(page):
if page==1:
url="https://sc.chinaz.com/tupian/xingganmeinvtupian.html"
else:
url="https://sc.chinaz.com/tupian/xingganmeinvtupian_"+str(page)+".html"
headers={
'User-Agent' :'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,ike Gecko) Chrome/77.0.3865.120 Safari/537.36 Core/1.77.54.400 QQBrowser/10.9.4520.400'
}
request= urllib.request.Request(url=url,headers=headers)
return request
def get_content(request):
response = urllib.request.urlopen(request)
content= response.read().decode("utf-8")
return content
def down_file(content):
from lxml import etree
tree=etree.HTML(content)
# #这里之所以写成 src2 是因为 访问图片类的网站时 网站为了不卡 采用了 懒加载的方式
# #比如 我没有下拉到底的时候 是src属性 下拉到底了 就是src2 所以需要注意
url_list=tree.xpath("//div[@id='container']//a/img/@src2")
name_list=tree.xpath("//div[@id='container']//a/img/@alt")
#循环下载本页的每一张图片
for i in range(len(url_list)):
url="http:"+url_list[i]
name=name_list[i]
urllib.request.urlretrieve(url=url,filename='./xpathJPG/'+name+".jpg")
if __name__=="__main__":
start_page=int(input("请输入起始页码:"))
end_page=int(input("请输入结束页码:"))
for page in range(start_page,end_page+1):
request = get_request(start_page)
content = get_content(request)
down_file(content)