파충류 고양이 눈 영화 랭킹 기어오르기 코드
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에 따라 라이센스가 부여됩니다.