pythonでアップルcms映画サイトの自動採集を実現
アップルcms映画サイトの自動採集
アップルcmsで構築された映画サイトでは、バックグラウンドのカスタムリポジトリを通じてリソースサイトをリンクすることができます.この方式は簡単で操作しやすい.しかし、問題は採集時に2つの属性しか選択できないことです.1つは映画のタイプを選択できること、2つは映画の更新時間を限られた選択できることです.このように操作した結果、品質を区別することができず、良秀がそろっていないので、良い映画はすべて踏んでいます.
この問題を解決するためにpythonで小さなプログラムを編成し,指定された映画名で一括採集を実現した.第1部は爬虫プログラムで、豆弁映画ランキングから各タイプの映画の好評率が上位30%の映画を登ったり、上位10%か20%だけを選んだりすることができます.ムービー名を「***.Txt」ファイルとして保存します.第2部の採集プログラムは、映画名に従って1つずつ検索し、自分の映画サイトに採集する.このようにして、自分の映画庫が上位の良い映画だけを採集することを保証することができて、映画は多くなくて精巧です.以下に、一部のプログラムを収集するソースコードを示す.参考までに.
アップルcmsで構築された映画サイトでは、バックグラウンドのカスタムリポジトリを通じてリソースサイトをリンクすることができます.この方式は簡単で操作しやすい.しかし、問題は採集時に2つの属性しか選択できないことです.1つは映画のタイプを選択できること、2つは映画の更新時間を限られた選択できることです.このように操作した結果、品質を区別することができず、良秀がそろっていないので、良い映画はすべて踏んでいます.
この問題を解決するためにpythonで小さなプログラムを編成し,指定された映画名で一括採集を実現した.第1部は爬虫プログラムで、豆弁映画ランキングから各タイプの映画の好評率が上位30%の映画を登ったり、上位10%か20%だけを選んだりすることができます.ムービー名を「***.Txt」ファイルとして保存します.第2部の採集プログラムは、映画名に従って1つずつ検索し、自分の映画サイトに採集する.このようにして、自分の映画庫が上位の良い映画だけを採集することを保証することができて、映画は多くなくて精巧です.以下に、一部のプログラムを収集するソースコードを示す.参考までに.
# cms 。 xpath
# , “ ”, “ ” 。
import os
import random
import time
import requests
from lxml import etree
import re
def getmnames(): #
with open("e:\dc\dbrate\ .txt", 'r', encoding='utf-8')as f:
mname = f.readline()
while mname:
getid_1156(mname.replace('
', ''))
mname = f.readline()
def getid_1156(moviename):
# cms - -1156 -[ ], , id, id
global colsum
path = r'e:\dc\anmolive\\' # , dc datacenter
folder = os.path.exists(path)
if not folder: #
os.makedirs(path) # makedirs
#
url = 'http://anmo.live/login.php/admin/collect/api.html?ac=list&cjflag=59a9b8208b4b3f76ab1f5a83cdf&' \
'cjurl=http%3A%2F%2Fcj.1156zy.com%2Finc%2Fapi.php&h=&t=&ids=&wd=' + moviename + '&type=1&mid=1¶m=&page=1&limit='
# 1156 cookie
cookies_1156 = {'UM_distinctid': '172bc03c10f-06e3278c369-f7d123e-1fa400-172bc430d3ec',
'__cfduid': 'da522209aa7174fd411d5d1469f1596271935',
'PHPSESSID': '7bee1f791647ec61ed93e1d1c11a13a3',
'admin_id': '1',
'admin_name': '×××',
'admin_check': '4bf45d54e07ea484d09214f2fda',
'CNZZDATA1277635278': '784101942-1596271233-http%253A%252F%252Fanmo.live%252F%7C1596415349'}
headers = get_headers()
try:
print(' ' + moviename)
r = requests.get(url, headers=headers, cookies=cookies_1156)
except:
print("Connection refused by the server..")
time.sleep(5)
cont = r.content # r.content bytes
contstr = str(cont, 'utf-8') # utf-8
# , , ,
reg_rul = r''+moviename+'' # 。
reg = re.compile(reg_rul)
movie_list = reg.findall(contstr) # img_list imgurl list
if movie_list: # , xpath value
ethtml = etree.HTML(movie_list[0]) # xpath
movieids = ethtml.xpath('//input[@class="layui-checkbox checkbox-ids"]/@value') #xpath id
for movieid in movieids:
col_url = 'http://anmo.live/login.php/admin/collect/api.html?cjflag=59a9b825dfa8b76ab1f5a83cdf&' \
'cjurl=http%3A%2F%2Fcj.1156zy.com%2Finc%2Fapi.php&h=&t=&ids=&wd=%E9%87%91%E5%88%9A%E7%8B%BC&type=1&mid=1' \
'¶m=&page=%7Bpage%7D&limit=%7Blimit%7D&ac=cjsel&ids=' + movieid
try:
r = requests.get(col_url, headers=headers, cookies=cookies_1156)
except:
print("Connection refused by the server..")
result = r.content # r.content bytes
result = str(result, 'utf-8') # utf-8
if result.find(" ") != -1:
colsum += 1
print(moviename + ' ')
elif result.find(" ") != -1:
print(' , , 。 ')
elif result.find(" ") != -1:
print(' , 。 ')
else:
print(' , 。')
else: # ,
with open(path + '1156mcdlist.txt', 'a', encoding='utf-8')as mcdf: # mcdlist.txt
mcdf.write(moviename + '
')
print(moviename + ' 。')
def get_headers(): # headers
user_agents = ['Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
'Mozilla/5.0(Macintosh;IntelMacOSX10_7_0)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11'
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36']
headers = {'User-Agent': random.choice(user_agents)}
return headers
colsum = 0 #
getmnames()
print(" "+str(colsum)+" ")