pandas用递归重试的方法

# -*- coding: utf-8 -*-
"""
Created on Mon Dec 17 11:41:40 2018

@author: badminton.Zhou
"""
import time
import random
import pandas as pd
from lxml import etree
import requests
import re
import json

yesterday = str(pd.datetime.today().date()-pd.Timedelta(days=1)).replace('-','')
x = 'data/b_%s.xlsx'%yesterday
df = pd.read_excel('16.xlsx')
au = 'audio_qq_id_%s.xlsx'%yesterday
au = 'data/audio_a_%s.csv'%yesterday

def get_id(search_name,max_retry=5):
    url = '{}'.format(search_name)
    try:
        r = requests.get(url = url,headers = headers,verify=True)
       
        r1 = requests.get(url = url_detail,headers=headers)
        html = r1.text
        e = etree.HTML(html)
        
        print(data_id)
        
      
        df1 = pd.DataFrame([song_name, singer_name, data_id]).T
        df1.to_csv(o_csv, index=False, header=False, mode='a', sep='\t', encoding='utf-8')
        print(singer_name)
        time.sleep(random.random()+1.5)
    except Exception as e:
        if max_retry > 0:
            time.sleep(random.random()+5)
            print(type(e))
            return get_id(search_name,max_retry=max_retry-1)
def search_name():
    for song , singer in zip(df,df['歌']):
        search_name = song + singer
        print(search_name)
        get_id(search_name=search_name)
def save_data():
    df2 = pd.read_csv(audio_csv,sep='\t',engine='python',encoding='utf-8',names=['song_name','singer_name','data_id'])
    with pd.ExcelWriter(audio_x) as f:
        df2.to_excel(f,index=False,sheet_name='comments')
    df3 = pd.concat([df,df2],axis=1)
    df3.to_excel(au,index=False)
if __name__ == '__main__':
    search_name()
    save_data()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值