Python爬虫:urllib.request库下载图片
程序员文章站
2022-05-03 20:04:27
...
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()
上一篇: python爬虫爬取网页
下一篇: 用urllib爬虫