首先是汽车之家品牌页面的HTML
我们定位到图片那个位置,这个img标签的src加上https就是图片完整的地址
那么品牌名称就是下面那个p标签的text
接下来我们的目的就是从中取出src和text了,下面是获取的全部代码
# coding:utf-8
# 引入相关模块
import requests
from bs4 import BeautifulSoup
url = "https://car.autohome.com.cn/zhaoche/pinpai/"
# 请求汽车之家的 URL,获取其 text 文本
wbdata = requests.get(url)
#编码格式,避免中文乱码的情况出现
wbdata.encoding = 'gb18030'
# print(wbdata)
# 对获取到的文本进行解析
soup = BeautifulSoup(wbdata.text,'lxml')
# print(soup)
# 从解析文件中通过 select 选择器定位指定的元素,返回一个列表
# icons = soup.select("a.pic > img")
# print(icons)
titles = soup.select("div.uibox-con >dl > dt > p > a")
#这里很关键,拿出来的数据其实包含了两个同级p标签,
#第一个是logo第二个是品牌文字,所以我这里的处理就是根据奇偶数判断是logo还是品牌文字
src = ''
totalDatas = []
for i in range(len(titles)):
if i % 2 ==0 :
src = titles[i].img.get("src")
# print(src)
else:
title = titles[i].get_text();
# print(title)
#做一个写入
datas = {
"src": "https:" +src,
"title":title
}
totalDatas.append(datas)
printf(totalDatas)
当然这里得到了全部的图片信息,那么我们应该把它下载到本地方便自己使用
import os,stat
import urllib.request
#必须使用ssl,否则会报证书验证的错误
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
def save_img(img_url,file_name,file_path='test\img'):
#保存图片到磁盘文件夹 file_path中,默认为当前脚本运行目录下的 test\img文件夹
try:
if not os.path.exists(file_path):
print ('文件夹',file_path,'不存在,重新建立')
#os.mkdir(file_path)
os.makedirs(file_path)
#获得图片后缀
file_suffix = os.path.splitext(img_url)[1]
#拼接图片名(包含路径)
filename = '{}{}{}{}'.format(file_path,os.sep,file_name,file_suffix)
#下载图片,并保存到文件夹中
urllib.request.urlretrieve(img_url,filename=filename)
except IOError as e:
print ('文件操作失败',e)
except Exception as e:
print ('错误 :',e)
for data in totalDatas:
img_url = data["src"]
file_name = data["title"]
save_img(img_url,file_name)
网友评论