53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
# -*- encoding:utf-8 -*-
|
||
|
||
'''
|
||
@Author : dingjiawen
|
||
@Date : 2024/03/21 15:57
|
||
@Usage :
|
||
@Desc :使用playwright自动一个浏览器,执行js
|
||
'''
|
||
import requests
|
||
from playwright.sync_api import sync_playwright
|
||
import time
|
||
import os
|
||
|
||
BASE_URL = 'https://spa2.scrape.center/'
|
||
INDEX_URL = BASE_URL + "/api/movie?limit={limit}&offset={offset}&token={token}"
|
||
MAX_PAGE = 10
|
||
LIMIT = 10
|
||
|
||
context = sync_playwright().start()
|
||
browser = context.chromium.launch(devtools=True, headless=False)
|
||
|
||
page = browser.new_page()
|
||
|
||
# 注意这里路径需要加上**
|
||
page.route(
|
||
"**/js/chunk-10192a00.243cb8b7.js",
|
||
lambda route: route.fulfill(path='chunk.js')
|
||
)
|
||
page.goto(BASE_URL, wait_until='networkidle')
|
||
|
||
|
||
def get_token(offset):
|
||
# page.wait_for_function('window.encrypt !== undefined')
|
||
try:
|
||
result = page.evaluate('''() => {
|
||
console.log('window',window)
|
||
console.log('encrypt',window.encrypt)
|
||
return window.encrypt("%s","%s")
|
||
}''' % ('/api/movie', offset))
|
||
return result
|
||
except Exception as e:
|
||
time.sleep(100)
|
||
print(e)
|
||
|
||
|
||
for i in range(MAX_PAGE):
|
||
offset = i * LIMIT
|
||
token = get_token(offset)
|
||
print(token)
|
||
index_url = INDEX_URL.format(limit=LIMIT, offset=offset, token=token)
|
||
response = requests.get(index_url)
|
||
print('response', response.json())
|