抓取接口数据,并存放到数据库中

 本文为抓取APP的接口数据,并放到mysql中

# /bin/python3
# -*-coding:utf-8-*-
# __author_=lixj


import requests
import re
import time
import pymysql
import json
import jsonpath

# get 请求
def get(i):
        url = 'https://www.buyao.tv/appapi/by_mvlist.php?appkey=BYMUSICOFFVN0DtKGcebowgEPLtASJfBBn6iOTQ&ac=list&ordering=1&cityid=0&page='+i+'&userid=1'
        #print('this is url***********************************************************************************************************************')
        #print('this is url:%s'%url)
        link = requests.get(url=url)
        return link.text


# 循环请求
def url_while (cishu,i):
        while i < cishu:
                str_i = str(i)
                print('this is %s *******************************************************************************************************'%i)
                #print(get(str_i))
                #print('this is %s **********************************************************'%i)

                #判断是否有内容,有打印内容,没有退出循环
                select_id = re.search('image',get(str_i),re.M|re.I)
                if select_id:
                        json_text = (get(str_i))
                        print('this json_text type is %s '%type(json_text))
                        text_image = jsonpath_image(json_text,str_i)
                        text_id = jsonpath_id(json_text,str_i)
                        print('this is id %s : ' %text_id)
                        text_title = jsonpath_title(json_text,str_i)

                        print('this is title %s ' %text_title)
                        sql_insert(text_id,text_title)
                        #print(json_text)
                else:
                        print('no have')
                        break
                i = i + 1
                # 休息,服务器比较渣
                time.sleep(3)

#查询image地址
def jsonpath_image (text,i):
        json_py = json.loads(text)
        image = jsonpath.jsonpath(json_py,expr = '$..image')
        return image


#查询id地址
def jsonpath_id (text,i):
        json_id = json.loads(text)

#查询sumary
def jsonpath_summary(text,i):
        json_summary = json.loads(text)
        select_summary = jsonpath.jsonpath(json_summary,expr = '$..summary')
        return select_summary


#查询title
def jsonpath_title(text,i):
        json_title = json.loads(text)
        select_title = jsonpath.jsonpath(json_title,expr = '$.by_item..title')
        return select_title

#把输入的string转换为int
def input_int(input_str):
        try:
                int_shuchu = int(input_str)
        except:
                pass

        return int_shuchu


# 连接数据库
def sql_execute(sql):
        db = pymysql.connect('localhost','root','lxj.......','test')
        cursor = db.cursor()
        try:
                cursor.execute(sql)
                db.commit()
                db.close
                return cursor.fetchall()

        except:
                print('this is erro:%s' %sql)


#插入数据库
def sql_insert(list_execute,list_execute2):
        length = len(list_execute)
        for i in range(0,length):
                sql_sentence = 'insert into test (id,name) values(\''+list_execute[i]+'\','+'\''+list_execute2[i]+'\')'
                print(sql_sentence)
                jieguo = sql_execute(sql_sentence)
                #print('jieguo is %s' %jieguo)
                print(jieguo)


if __name__ == '__main__':

        input_start_cishu = input ('please input start page:')
        int_start_cishu = input_int(input_start_cishu)


        input_cishu = input('please input large page:')
        int_cishu = input_int(input_cishu)

        url_while(int_cishu,int_start_cishu)

        #sql_1 = 'select * from test'
        #sql = 'insert into test (id) values(\'20\');'
        #print(sql_execute(sql_1))
        #print(sql_execute(sql))




猜你喜欢

转载自blog.csdn.net/lixj_qi/article/details/82656979