为了防止反爬的问题 , 设立请求头
header ={'User-Agent': 'Mozilla/5.0 (windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml,like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
接着使用xlrd库读取Excel表格 , 按照列对象读取数据
workbook= xlrd.open_workbook(excel_address)
sheet =workbook.sheet_by_name("Sheet1")
col0 =sheet.col_values(0) # 获取第1列内容,序号那一列
col1 =sheet.col_values(1)# 获取第2列内容,物资名称那一列
col2=sheet.col_values(2)#获取第3列内容,型号规格那一列
col3=sheet.col_values(3)
col4=sheet.col_values(4)
col5=sheet.col_values(5)
使用lazy_pinyin函数将汉字转为拼音 , 同时保留了音素并保存:
for i in col1:
i=lazy_pinyin(i)
txt=""
for w in i:
txt+=w+" "
yin.append(txt)
print(yin)
根据百度图片搜索图片并爬取保存 。其中为了防止网
页延迟等问题 , 通过多次尝试爬取合适的图片:
numm=
for i in range(len(col0)):
print("完成了"+str((i/len(col0))*100)+"%
判断读取到的数据是否是数字 , 因为其中有些数据是
空格等等多余的无效数据:
if isinstance(col0[i],float):
numm.append(i)
t=col1[i]+col2[i]
print(t)
url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + t + '&ct=201326592&v=flip'
result = requests.get(url, headers=header)
pic_url = re.findall('"objURL":"(.*?)",', result.text, re.S)
num=1
for each in range(len(pic_url)):
print('正在下载第' + str(num) + '张图片 , 图片地址:' + str(pic_url[each]))
try:
pic = requests.get(pic_url[each], timeout=2,headers=header)
保存爬取下来的图片至对应的文件夹中 , 文件夹名为
对应行的序号 。然后设置爬取下来的图片尺寸为300
并保存:
if not os.path.exists("image/"+str(i)):
os.makedirs("image/"+str(i))
dir = "image/"+str(i)+"/" + str(num) + '.jpg'
fp = open(dir, 'wb')
fp.write(pic.content)
fp.close
try:
img = Image.open("image/" +str(i)+"/" + str(num) + '.jpg')
img.resize((300, 300)).save("image/" +str(i)+"/" + str(num) + '.jpg')
except:
pass
num += 1
if num == 5:
print("下一个 。")
result.close
break
except :
print('【换资源中 。。。】')
continue
每个货物名称只需要下载爬取四个图片即可:
if num == 5:
print("下一个 。")
result.close
time.sleep(random.randint(0,3))
break
其中download.py运行效果如下:
文章插图
爬取下来的保存部分图片如下:
文章插图
接着使用xls.py进行排版 。因为这里我们使用xlrd排版
时发现保存的Excel格式都失效了 , 故需要借助
openpyxl库进行原有格式的保存和处理 , 即保存为
新的Excel为8.xlsx 。
import os
import xlrd
from pypinyin import lazy_pinyin,pinyin
from openpyxl import load_workbook
from openpyxl.drawing.image import Image
#改文件名的地方
excel_address="4.xlsx"
wb = load_workbook(excel_address)
wb.save("8.xlsx")
workbook = xlrd.open_workbook(excel_address)
sheet1 = workbook.sheet_by_name("Sheet1")
wb = load_workbook('8.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
sht = wb.worksheets[0]
col0 = sheet1.col_values(0) #获取第1列内容,序号那一列
col1 = sheet1.col_values(1)#获取第2列内容,物资名称那一列
col2=sheet1.col_values(2)#获取第3列内容,型号规格那一列
col3=sheet1.col_values(3)
col4=sheet1.col_values(4)
col5=sheet1.col_values(5)
推荐阅读
- Python 为什么用 # 号作注释符?
- 峰顶寺茶业加盟信息,鹭岩茶业
- 纯CSS实现等高价目表
- 福海茶叶加盟信息,加盟白茶品牌
- Python-Pandas模块Series
- python中的异步网络框架socketserver
- 个人医保账户如何实现“亲属共享”?
- 哪些高速公路收费站和服务区关闭关停?何时开放?怎样绕行?公示汇总信息在这儿查
- 古茗茶叶加盟信息,加盟白茶费用
- 凤宁号茶叶加盟信息,佛山市南海区春之茗茶叶加盟八方茶园