当前位置: 首页 > news >正文

网站建设实训报告模板wordpress发布商品

网站建设实训报告模板,wordpress发布商品,色盲,携程旅行网官网python项目实战——下载美女图片 文章目录 python项目实战——下载美女图片完整代码思路整理实现过程使用xpath语法找图片的链接检查链接是否正确下载图片创建文件夹获取一组图片的链接获取页数 获取目录页的链接 完善代码注意事项 完整代码 import requests import re import…python项目实战——下载美女图片 文章目录 python项目实战——下载美女图片完整代码思路整理实现过程使用xpath语法找图片的链接检查链接是否正确下载图片创建文件夹获取一组图片的链接获取页数 获取目录页的链接 完善代码注意事项 完整代码 import requests import re import pprint from lxml import etree import os# 拿到具体页面的链接下载一张图片 def download_images(url):rot requests.get(urlurl)rot.encodingrot.apparent_encoding# print(rot.text)html etree.HTML(rot.text)try:title html.xpath(//div[classImageBody]//img/alt)links html.xpath(//div[classImageBody]//img/src)# 显示下载内容# print(title[0])# print(links[0])number1 html.xpath(//li[classthisclass]/a[href]/text())# print(title[0]str(number1[0]))# print(links[0])# 创建文件夹if not os.path.exists(f图片/{title[0]}):os.mkdir(f图片/{title[0]})pic requests.get(urllinks[0]).contentwith open(f图片/{title[0]}/{title[0]}{str(number1[0])}.jpg,wb) as f:f.write(pic)print(f已下载……{title[0]}{str(number1[0])}) # 提示下载成功except:print(f出错了......{url})# 给第一个图片的链接就可以得到其他图片的链接 def link_of_pictures(url):rot requests.get(urlurl)# print(url) # 检查当前链接是否正确rot.encodingrot.apparent_encoding# print(rot.text)html etree.HTML(rot.text)features re.findall(xingganmeinv/(\\d).htm,url)[0]# print(features) # 这一组的特征值比如http://www.umeituku.com/meinvtupian/xingganmeinv/208585.htm里面的208585# 获取页数numbers html.xpath(//div[classNewPages]//ul//li//a/text())number re.findall(共(\\d)页,numbers[0])# print(number[0]) # 页数download_images(url)for i in range(2,int(number[0]) 1):# 得到了这组图片的其他链接urll re.sub(rxingganmeinv/.*, fxingganmeinv/{features}_{i}.htm, url)# print(urll)download_images(urll)# 得到这个系列的单页的链接 url https://www.umeituku.com/meinvtupian/ header {user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0} rt requests.get(urlurl,headersheader) rt.encoding rt.apparent_encoding # apparent_encoding可以自己判断网页的编码方式然后再传给encoding进行解析 # print(rt.text) html etree.HTML(rt.text) title html.xpath(//div[classTypeList]//div[classListTit]/text()) links html.xpath(//div[classTypeList]//a[classTypeBigPics]/href) # pprint.pprint(title) # pprint.pprint(links) for item in links:link_of_pictures(str(item))这个代码还能修改但是作为掌握爬取网页图片来说已经足够了 这里的第三个模块是获取目录页的总链接也就是第一页所有组的第一张还能再次翻页再次使用for循环就可以实现了 思路整理 获取图片页源代码提取所有图片的链接保存一组图片爬取目录页源代码下载图片翻页下载 实现过程 首先是下载一张图片这里最好是找个简单点的网址不要去找太火的有反爬机制对于小白来说有点难 因为我折腾了好几天提取的链接就是不能独立下载 脑子突然开窍换了个网站进度嗖嗖的 这里不推荐网站了以免对网站造成干扰 想要可以去代码里面找 使用xpath语法找图片的链接 这里去看网页源代码看看图片是否包含在源代码里面如果在源代码里面是最简单的情况 这里使用requests库的get请求可以得到网页的源代码找到了图片的位置就是在源代码里面如果不在源代码里面需要使用抓包的方式获取图片的链接 检查链接是否正确 我们从源代码找到图片的链接之后复制链接去浏览器查看如果点开就是一张图片那就成功了如果不是就换网站 下载图片 我们将得到的图片链接再次给requests模块保存图片的方式是二进制码流 pic requests.get(urllinks[0]).content对就是在requests函数后面再加一个content 就可以得到图片了现在这个图片被我们保存在pic对象里面 再使用文件操作就可以把图片保存在本地文件了 因为是二进制码流我们在保存文件的时候使用wb的方式写入 with open(f图片/{title[0]}/{title[0]}{str(number1[0])}.jpg,wb) as f:f.write(pic)print(f已下载……{title[0]}{str(number1[0])}) # 提示下载成功能下载图片之后把上面这部分独立出来做成函数让别的地方提供网址来使用 # 拿到具体页面的链接下载一张图片 def download_images(url):rot requests.get(urlurl)rot.encodingrot.apparent_encoding# print(rot.text)html etree.HTML(rot.text)try:title html.xpath(//div[classImageBody]//img/alt)links html.xpath(//div[classImageBody]//img/src)# 显示下载内容# print(title[0])# print(links[0])number1 html.xpath(//li[classthisclass]/a[href]/text())# print(title[0]str(number1[0]))# print(links[0])# 创建文件夹if not os.path.exists(f图片/{title[0]}):os.mkdir(f图片/{title[0]})pic requests.get(urllinks[0]).contentwith open(f图片/{title[0]}/{title[0]}{str(number1[0])}.jpg,wb) as f:f.write(pic)print(f已下载……{title[0]}{str(number1[0])}) # 提示下载成功except:print(f出错了......{url}) 这里我使用了try和except来进行异常捕获 因为在网站第四组图片的第10页是空图片网址有效但是没有找到图片 这里让程序进行一个报错并显示出错的网址就可以自己查看原因了 如下图所示倘若不使用异常捕获程序在这个报错的地方就会中断 一开始我还想少保存一张比如最后一张不保存那样就浪费数据了 创建文件夹 因为这里的图片都是一组一组的所以采用创建文件夹的方式把一组图片放在一个文件夹里面这个文件夹里面放这一组图片这个文件夹使用这组图片的标题命名因为这组图片没有自己的名字我们还需要人工加个序号 就像上图里面的某某1某某2等等 使用os库创建文件夹这个库可以获取程序运行的操作系统根据不同的操作系统创建不同的文件夹 if not os.path.exists(f图片/{title[0]}):os.mkdir(f图片/{title[0]})这里是使用if判断语句判断文件夹是否存在如果不存在就使用os.mkdir创建一个 获取一组图片的链接 仔细检查一下发现对于一组图片来说他们的网址有规律的变化 比如meinvtupian/xingganmeinv/208585.htm xingganmeinv/208585_2.htm 只有后面发生了变化 我们可以使用字符串替换函数配合for循环生成这组图片的链接 # 给第一个图片的链接就可以得到其他图片的链接 def link_of_pictures(url):rot requests.get(urlurl)# print(url) # 检查当前链接是否正确rot.encodingrot.apparent_encoding# print(rot.text)html etree.HTML(rot.text)features re.findall(xingganmeinv/(\\d).htm,url)[0]# print(features) # 这一组的特征值比如http://www.umeituku.com/meinvtupian/xingganmeinv/208585.htm里面的208585# 获取页数numbers html.xpath(//div[classNewPages]//ul//li//a/text())number re.findall(共(\\d)页,numbers[0])# print(number[0]) # 页数download_images(url)for i in range(2,int(number[0]) 1):# 得到了这组图片的其他链接urll re.sub(rxingganmeinv/.*, fxingganmeinv/{features}_{i}.htm, url)# print(urll)download_images(urll)这里的features就是变化的地方我管他叫特征值你们可以随便起名字 获取页数 这里我们可以从源代码里面找到这一组图片的页数 然后根据页数生成链接再让上面的函数去访问图片 错误示范 一开始的时候发现在图片的下面可以选择页数点击第几页就会跳转根据这个思路好像可以把这个页数链接爬下来制成列表再挨个访问 对于页数少的还可以但是这个直接跳转只能最多显示7页哪怕共10页从第一页最多跳转到第7页 所以没办法直接从页面获取链接只能根据规律自己改写链接 for i in range(2,int(number[0]) 1):# 得到了这组图片的其他链接urll re.sub(rxingganmeinv/.*, fxingganmeinv/{features}_{i}.htm, url)# print(urll)download_images(urll)也就是得到页数进行n次循环就好了 获取目录页的链接 从目录页可以看到多组图片的第一页直接点击也可以完成跳转 检查源代码发现每组图片的首页链接可以被爬取 # 得到这个系列的单页的链接 url https://www.umeituku.com/meinvtupian/ header {user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0} rt requests.get(urlurl,headersheader) rt.encoding rt.apparent_encoding # apparent_encoding可以自己判断网页的编码方式然后再传给encoding进行解析 # print(rt.text) html etree.HTML(rt.text) title html.xpath(//div[classTypeList]//div[classListTit]/text()) links html.xpath(//div[classTypeList]//a[classTypeBigPics]/href) # pprint.pprint(title) # pprint.pprint(links) for item in links:link_of_pictures(str(item))这里的url是目录页的链接 links是每组的首页链接列表 完善代码 这里的获取目录页链接还能再改把这个操作改成函数还能再写for循环访问所有的目录页 貌似有成百上千个这里作为代码展示就不写了有能力的可以试试 注意事项 这段代码不能独立工作必须放在项目里面 这个代码运行成功之后我就想做成exe程序但是里面涉及了文件保存的地址还有一些库函数 ai帮忙改了一下,让程序获取文件所在的位置倒是解决了必须放在项目里面的问题但是依旧不能打包exe或者文件夹 import requests import re import pprint from lxml import etree import os# 获取当前脚本的绝对路径 current_directory os.path.dirname(os.path.abspath(__file__)) image_directory os.path.join(current_directory, 图片)# 拿到具体页面的链接下载一张图片 def download_images(url):rot requests.get(urlurl)rot.encoding rot.apparent_encodinghtml etree.HTML(rot.text)try:title html.xpath(//div[classImageBody]//img/alt)links html.xpath(//div[classImageBody]//img/src)number1 html.xpath(//li[classthisclass]/a[href]/text()) # 在这里提取 number1# 确保 title 和 number1 都有值if not title or not number1:print(f未能提取标题或编号URL: {url})return# 创建文件夹image_folder os.path.join(image_directory, title[0])if not os.path.exists(image_folder):os.makedirs(image_folder) # 使用 makedirs 可以创建多层目录pic requests.get(urllinks[0]).contentwith open(os.path.join(image_folder, f{title[0]}{str(number1[0])}.jpg), wb) as f:f.write(pic)print(f已下载……{title[0]}{str(number1[0])}) # 提示下载成功except Exception as e:print(f出错了......{url}, 错误信息: {e})# 给第一个图片的链接就可以得到其他图片的链接 def link_of_pictures(url):rot requests.get(urlurl)rot.encoding rot.apparent_encodinghtml etree.HTML(rot.text)features re.findall(xingganmeinv/(\\d).htm, url)[0]# 获取页数numbers html.xpath(//div[classNewPages]//ul//li//a/text())number re.findall(共(\\d)页, numbers[0])download_images(url)for i in range(2, int(number[0]) 1):urll re.sub(rxingganmeinv/.*, fxingganmeinv/{features}_{i}.htm, url)download_images(urll)# 得到这个系列的单页的链接 url https://www.umeituku.com/meinvtupian/ header {user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0} rt requests.get(urlurl, headersheader) rt.encoding rt.apparent_encoding html etree.HTML(rt.text) title html.xpath(//div[classTypeList]//div[classListTit]/text()) links html.xpath(//div[classTypeList]//a[classTypeBigPics]/href)for item in links:link_of_pictures(str(item))
http://www.tj-hxxt.cn/news/138266.html

相关文章:

  • 2015年做哪些网站致富单页营销分享网站
  • pc网站建设方案有哪些深圳专业专业网站建设公司
  • 网络营销是一种无媒介销售阳江网站seo公司
  • 慈溪网站建设报价网络营销公司哪家不错
  • 服饰网站建设wordpress文章部分展示
  • 萧山区网站建设贵州润铁祥建设工程有限公司网站
  • 如何网站做外贸生意网校培训
  • 网站新闻发布系统模板网站展示型推广有哪些
  • 网站 繁体 js咨询类公司注册需要什么
  • 北京企业网站设计报价男的和女的做那种短视频网站
  • 可以做兼职的网站有哪些工作室销售怎样找精准客户
  • 企业推广建站瑞安 网站建设
  • 企业网站开发公司有哪些微信小程序开发大赛
  • 网站建设店铺介绍怎么写wordpress js加载速度
  • 安国市住房和城乡建设局网站照明灯企业网站织梦模板
  • 大岭山网站建设公司html网页设计介绍
  • dede 网站地图 模块科技 响应式网站模板下载
  • 百度竞价网站谁做网站建设专业性的评估
  • 前端可以自己做网站么温州seo优化
  • 做网站设计难吗长春建站推荐
  • 郴州做网站seo台州建设工程网站
  • 聊城网站制作公司wordpress分类样式
  • 公司网站怎么关闭辽宁网站建设电话
  • 制作一个专门浏览图片的网站网页设计和网站开发哪个好
  • 青岛网站建设找php网站api接口写法
  • 网站开发 需要用到什么软件seoul是什么国家
  • 网站添加标签云wordpress 最强大主题
  • 顺义建站公司浙江建设继续教育网站
  • 网站做电商资质免费企业建站源代码
  • 网站推广计划书旅游网站效果图