赞
踩
1、说明:
使用urllib.request库请求汽车之家网页,返回报文用BeautifulSoup解析后提取出图片的下载链接,再使用urllib.request库下载图片到指定目录
2、代码:
- '''
- 在本python文件所在的目录下新建文件夹“mrsoft”,在“mrsoft”下新建四个文件夹:
- 车身外观、车厢座椅、其他细节、中控方向盘。
- 在汽车之家网站上下载图片分别放入以上四个文件夹里,并将图片文件名编好号
- 不足:比方说“车厢座椅”有103张图片,本程序只下载了第一页的62张
- '''
- import time
- import urllib.request
- from bs4 import BeautifulSoup
- import os
-
- class ReTbmm():
- def Retbmm(self):
- start = time.time()
- self.cdir = os.getcwd()
- # https://www.autohome.com
- # 车身外观
- url1 ='https://car.autohome.com.cn/pic/series-s32890/385-1.html#pvareaid=2023594'
- # 中控方向盘
- url2='https://car.autohome.com.cn/pic/series-s32890/385-10.html#pvareaid=2042220'
- # 车厢座椅
- url3 = 'https://car.autohome.com.cn/pic/series-s32890/385-3.html#pvareaid=2042220'
- # 其他细节
- url4 = 'https://car.autohome.com.cn/pic/series-s32890/385-12.html#pvareaid=2042220'
- self.getImag('车身外观',url1)
- self.getImag('中控方向盘', url2)
- self.getImag('车厢座椅', url3)
- self.getImag('其他细节', url4)
- end=time.time()
- print('run time:'+str(end -start))
-
- def getImag(self,name,urls):
- '''加上头部信息是为了解决反爬虫设置,
- 头部信息获取方式:在网页空白处右键“审查元素”,点击网络监视器Network,按F5刷新
- 网页,在Network拖到最下方找到“User-Agent”
- '''
- user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240'
- headers={'User-Agent':user_agent}
- request= urllib.request.Request(urls,headers=headers)
- response =urllib.request.urlopen(request)
- bsObj = BeautifulSoup(response,'html.parser')
- #找出所有以“<img”开头的节点
- #如: <img width="240" height="35" alt="汽车之家产品库" src="//x.autoimg.cn/car/images/logonew.png" />
- t1 =bsObj.find_all('img')
- for t2 in t1:
- t3 =t2.get('src')#获取该节点中的src字段,返回字符串,如://x.autoimg.cn/car/images/logonew.png
- print(t3)
- path = self.cdir +'/mrsoft/'+str(name)
- if not os.path.exists(path):
- os.makedirs(path)
- n =0
- for img in t1:
- n=n+1
- link =img.get('src')#获取该节点中的src字段,返回字符串,如://x.autoimg.cn/car/images/logonew.png
- if link:
- s ='http:'+str(link)#拼装图片完整的网址,如http://x.autoimg.cn/car/images/logonew.png
- i = link[link.rfind('.'):]#图片的后缀,如:.png
- try:
- request=urllib.request.Request(s)
- response =urllib.request.urlopen(request)
- imgData=response.read()#图片的二进制数据流
- pathfile =path+r'/'+str(n)+i #路径+图片编号+原始图片后缀
- with open( pathfile,'wb') as f:
- f.write(imgData) #将图片的二进制数据流写入文件
- f.close()
- print('下载完成图片'+str(n))
- except:
- print('11')
-
-
- if __name__ =='__main__':
- ui =ReTbmm()
- ui.Retbmm()

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。