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. 使用cookie的注意事项

    一.什么是cookie? Cookie(复数形态Cookies),中文名称为小型文本文件或小甜饼[1],指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密) ...

  2. phpstorm 10 注册码

    phpstorm 10 注册码 注册时选择License server,填http://idea.lanyus.com,然后点击OK 网上看评论的结果,亲测,有用!!!

  3. java学习第十四天

    1:正则表达式(理解) (1)就是符合一定规则的字符串 (2)常见规则 A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ( ...

  4. mysql java 通用AES加密

    最近有个需求,需要对数据库某些字段加密,调研发现采用AES加密的方式较多,而且反向解密速度快,符合需求,于是采用:下面是遇到的问题及相关代码 首先第一个问题,AES的秘钥是16位,mysql的密码长度 ...

  5. fetch技术

    Snandy If you cannot hear the sound of the genuine in you, you will all of your life spend your days ...

  6. Python用户交互以及数据类型

    一.用户交互与格式化输出 1.用户交互 1.1什么是用户交互 程序等待用户输入的数据,程序执行完毕后为用户反馈信息. 1.2为何程序要与用户交互 为了让计算机像人类一样与用户交互 1.3使用方式 在p ...

  7. codevs原创抄袭题 5960 信使

    题目描述 Description •战争时期,前线有n个哨所,每个哨所可能会与其他若干个哨所之间有通信联系.信使负责在哨所之间传递信息,当然,这是要花费一定时间的(以天为单位).指挥部设在第一个哨所. ...

  8. 工作中遇到的vscode配合eslint完成保存为eslint格式

    vscode个人设置 // vscode的个人设置配置 { "workbench.iconTheme": "vscode-icons", "workb ...

  9. AngularJS表单验证开发案例

    angular支持IE8+浏览器,虽然性能很好,但是目前只适用于手机端项目 知识点:域$scopeAngularJS基础指令指令实现不同的功能学习思路和方法 <link rel="st ...

  10. Struts2_总结

    还未学习的内容,如果到时候要用到,再去学.1.Lamda 表达式(很复杂,很少用)2.验证框架(默认验证方法 validation.方法开始前验证.开始后验证)3.UI标签(用的不多)4.类型转换中的 ...