파충류 고양이 눈 영화 랭킹 기어오르기 코드
from urllib import request, error, parse
import re, ssl
import pymysql
from fake_useragent import UserAgent
def maoyan_sipder():
    start_url = 'https://maoyan.com/board/4?offset=0'
    start_request(start_url)
def start_request(url):
    headers = {
        "User-Agent": UserAgent().random
    }
    req = request.Request(url=url, headers=headers)
    context = ssl._create_unverified_context()
    try:
        response = request.urlopen(req, context=context, timeout=10)
        if response.status == 200:
            print('    ')
            html_str = response.read().decode('utf-8')
            result = parse_data(html_str)
            if len(result) > 0:
                #     
                save_data_to_db(result)
                #        url  
                current_url = response.url
                #           
                pattern = re.compile('.*?offset=(\d+)')
                offset_result = re.findall(pattern, current_url)
                if offset_result:
                    offset = offset_result[0]
                    print('     ', offset)
                    next_offset = int(offset) + 10
                    next_url = 'https://maoyan.com/board/4?offset=' + str(next_offset)
                    print(next_url)
                    start_request(next_url)
            else:
                import time
                time.sleep(5)
                #       
                cursor.close()
                mysql_client.close()
                print('     ')
    except error.HTTPError as err:
        print(err.code, err.reason)
    except error.URLError as err:
        print(err.reason)
def parse_data(html_str):
    pattern = re.compile(
        '(.*?).*?' +
        '.*?' +
        '.*?(.*?).*?' +
        '(.*?).*?' +
        '(.*?).*?' +
        '(.*?).*?' +
        '(.*?)', re.S
    )
    result = re.findall(pattern, html_str)
    return result
def save_data_to_db(result):
    for movieInfo in result:
        info = {}
        info['rank'] = int(movieInfo[0])
        info['coverImage'] = movieInfo[1]
        info['title'] = movieInfo[2]
        info['actor'] = movieInfo[3]
        info['publishTime'] = movieInfo[4]
        info['score'] = float(movieInfo[5]+movieInfo[6])
        insert_sql = """
        INSERT INTO maoyanmovie(%s)
        VALUES(%s)
        """ % (','.join(info.keys()),','.join(['%s']*len(info)))
        
        try:
            cursor.execute(insert_sql,list(info.values()))
            mysql_client.commit()
        except Exception as err:
            print(err)
            mysql_client.rollback()
        # insert_sql = """
        # INSERT INTO maoyanmovie(rank,coverImage,title,actor,publishTime,score)
        # VALUES(%s,%s,%s,%s,%s,%s)
        # """
        # try:
        #     cursor.execute(
        #         insert_sql,
        #         [
        #             int(movieInfo[0]),
        #             movieInfo[1],
        #             movieInfo[2],
        #             movieInfo[3].replace('','').replace('
',''),
        #             movieInfo[4],
        #             float(movieInfo[5]+movieInfo[6])
        #         ]
        #     )
        #     mysql_client.commit()
        # except Exception as err:
        #     print(err)
        #     mysql_client.rollback()
if __name__ == "__main__":
    #        
    mysql_client = pymysql.Connect(host='localhost', port=3306, user='root', password='201314', database='maoyan', charset='utf8')
    #    
    cursor = mysql_client.cursor()
    maoyan_sipder()
        이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.