Python 实现信息自动配对爬虫排版程序( 二 )

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 【Python 实现信息自动配对爬虫排版程序】其中download.py运行效果如下:
 

Python 实现信息自动配对爬虫排版程序

文章插图
爬取下来的保存部分图片如下:
Python 实现信息自动配对爬虫排版程序

文章插图
接着使用xls.py进行排版 。因为这里我们使用xlrd排版
时发现保存的Excel格式都失效了,故需要借助
openpyxl库进行原有格式的保存和处理,即保存为
新的Excel为8.xlsx 。
import osimport xlrdfrom pypinyin import lazy_pinyin,pinyinfrom openpyxl import load_workbookfrom 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) 根据Excel表格单元填充进拼音:
for i in range(len(col0)): sht.row_dimensions[i].height = 150.0 if isinstance(col0[i], float): sheet["G"+str(i+1)].value=https://www.isolves.com/it/cxkf/yy/Python/2020-07-23/yin[i] 接着根据已经保存下来的爬取到的图片依次按照布局
顺序进行填充,同时还要设定一定的图片尺寸,以保
证布局的美观和合理:
for i in os.listdir("image"):


推荐阅读