import os
import time
import urllib.request
import urllib.parse
from lxml import etree # 构建面向对象的代码方式
class ZhanZhang(object): # 实例化参数,让参数能够全局调用
def __init__(self,url,headers):
self.headers=headers
self.url=url
self.opener=urllib.request.build_opener(urllib.request.HTTPHandler()) # 构建请求对象
def request(self):
request=urllib.request.Request(self.url,headers=self.headers)
opener = self.opener
response=opener.open(request)
return response
# 解析网页标签,获取图片地址
def paserHtml(self):
response=self.request()
html=response.read().decode("utf8")
htmlInfo=etree.HTML(html)
# xpath解析网页标签
parserXpath =htmlInfo.xpath('//div[@id="container"]/div[@class]/div/a')
# 获取标签的href属性
imgUrl=[iHref.get("href") for iHref in parserXpath]
# 获取图片的名字
imgName=[iName.get("alt") for iName in parserXpath]
num = len(imgUrl)
imgData={"imgUrl":imgUrl,"imgName":imgName,"num":num}
return imgData # 下载请求图片
def download(self):
imgData=self.paserHtml()
if not os.path.exists("金毛"):
os.mkdir("金毛")
try:
for index in range(imgData["num"]):
print("正在下载第%d张图片"%index)
lastUrl =imgData["imgUrl"][index]
filename=imgData["imgName"][index]+".png"
filepath=os.path.join("金毛",filename)
newresponse_html= urllib.request.urlopen(lastUrl).read().decode("utf8")
newTree=etree.HTML(newresponse_html)
newUrl=newTree.xpath("//div[@class='img_text']/span/a")[0].get("href")
urllib.request.urlretrieve(newUrl,filepath)
time.sleep(1)
except Exception as e:
print("数据请求完成") # 主函数,调用类方法
def main():
url = "http://sc.chinaz.com/tupian/jinmaoquantupian.html"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'}
zhanzhang_photo=ZhanZhang(url,headers)
zhanzhang_photo.download() if __name__ == '__main__':
main()

爬虫学习(十四)——xpath项目实践的更多相关文章

  1. 201671010447 杨露露 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 作业学习目标 总结这学期软件工程学习获得 一 ...

  2. 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 团队名称 快活帮 作业学习目标 (1)掌握软 ...

  3. 201671010449 杨天超 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 作业学习目标 1.掌握软件评审流程及内容 2.个人总结 实验一问题解答 实验一问题链接:https://ww ...

  4. 201671010450-姚玉婷-实验十四 团队项目评审&课程学习总结

    项目 内容 所属科目 软件工程http://www.cnblogs.com/nwnu-daizh 作业要求 https://www.cnblogs.com/nwnu-daizh/p/11093584. ...

  5. 201671010456-张琼 实验十四 团队项目评审&课程学习总结

    博文简要信息表 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu- ...

  6. 201671030128周琳 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 作业学习目标 掌握软件项目评审会流程:反思 ...

  7. 201671030103 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 任课教师首页链接 这个作业的要求在哪里 作业链接地址 课程学习目标 (1)掌握软件项目评审会流程 (2)反思总结课程学习内容 任务一: 团队项目Github仓库中提交 ...

  8. 201671030126 赵佳平 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于那个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 作业学习目标 掌握软件项目评审会流程:反思 ...

  9. 201671010404+陈润菊 实验十四 团队项目评审课程&学习总结

    个人学习总结博客 这个作业属于哪个课程 软件工程任教教师 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11093584.html 作业学习目标 (1 ...

  10. 201671010426 孙锦喆 实验十四 团队项目评审&课程学习总结

    徐明锦 徐明锦 2 95 2019-06-30T14:54:00Z 2019-06-30T14:54:00Z 9 608 3472 28 8 4072 14.00 Clean Clean false ...

随机推荐

  1. (转)cut命令详解

    Linux:cut命令详解   cut 文件内容查看 显示行中的指定部分,删除文件中指定字段 显示文件的内容,类似于下的type命令. 说明 该命令有两项功能,其一是用来显示文件的内容,它依次读取由参 ...

  2. escape、encodeURI以及encodeURIComponent

    在标准中,只有字母和数字[0-9a-zA-Z].一些特殊符号"$-_.+!*'(),"[不包括双引号].以及某些保留字,才可以不经过编码直接用于URL.但是比如我们搜索时,往往会输 ...

  3. web.xml文件配置详解以及实例说明

    1.web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件. 2.部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出 ...

  4. HDU 4336——Card Collector——————【概率dp】

    Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  5. 深入.NET框架。

    1.Microsoft.NET框架结构是一个面向网络,支持各种用户终端的开发平台. 2..NET框架的主要内容有CLR,FCL,ADO.NET,XML,ASP.NET,WinForms和WebSeri ...

  6. js获取日期:前天、昨天、今天、明天、后天

    前天,昨天,今天,明天,后天 <html> <head> <meta http-equiv="Content-Type" content=" ...

  7. Html+CSS--->第一周初探

    html css 学了一周的前端,谈谈我的感想 我一直在使用sublime text 3来编辑我的代码,其中有很多很好用的快捷键和插件大大提高了我的开发效率 在这里我极力推荐使用编辑器来进行学习前端. ...

  8. Git如何解决冲突

    解决冲突 现在我把gitTest中的东西全删了包括那个.git文件. 初始化仓库git init,新建一个a.txt,在里边写个master,执行git add a.txt,然后执行git commi ...

  9. seattle language school & on-line degree

    http://www.kaplaninternational.com/ https://asuonline.asu.edu/online-degree-programs/ https://asuonl ...

  10. 双击易语言没有反应,按住shift再双击可解决

    参考资料:http://tieba.baidu.com/p/2987732743 的7楼.