描述:使用xpath来进行页面的解析,爬取站长素材网某个分类的图片,并把它们全部下载到本地
下载到本地使用的函数语句为:
urllib.request.urlretrieve(url=“路径”,filename="文件名")
该页面更新之后就不再使用懒加载了,直接使用img的
data-original
这个属性进行图片地址的解析就可以了
下面是实例代码:
(不要忘了在运行代码之前更改自己的UA,同时在项目中创建名为loveimg的文件夹,否则图片无法下载会报错的)
import urllib.request
import urllib.parse
from lxml import etree
headers = {
"User-Agent":"这里填写自己的UA"
}
def getcontent(page):
if(page==1):
url="https://sc.chinaz.com/tupian/qinglvtupian.html"
else:
url="https://sc.chinaz.com/tupian/qinglvtupian_"+str(page)+".html"
request=urllib.request.Request(url=url,headers=headers)
response=urllib.request.urlopen(request)
content=response.read().decode("utf-8")
return content
def down_load(content,page):
tree=etree.HTML(content)
srcs=tree.xpath('//div[@class="container"]//img/@data-original')
#print(srcs)
names=tree.xpath('//div[@class="container"]//img/@alt')
#print(len(names))
for i in range(len(names)):
name=names[i]
#print(names[i]+" "+srcs[i])
src='https:'+srcs[i]
print(src)
urllib.request.urlretrieve(url=src,filename='./loveimg/'+name+'.jpg')
if __name__ == '__main__':
startpage=int(input("请输入起始页面"))
endpage=int(input("请输入终止页面"))
for page in range(startpage,endpage+1):
content=getcontent(page)
down_load(content,page)