CBSにはテレビ番組「ザ・チャレンジ」があり、季節ごとにエピソードがたくさんあります。彼らはここのCBSウェブサイトにあります:https://www.cbs.com/shows/the-challenge/
このようなすべてのビデオリンクのリストが欲しいです(シーズン11の最初の4つのエピソード)。
https://www.cbs.com/shows/the-challenge/video/C5NCzTv2qJp1GwhcV5KWxeKWN4p6_Mqt/the-challenge-throwing-down-the-gauntlet/
https://www.cbs.com/shows/the-challenge/video/kXdno68B36gd6s06OhdrUDUvAAYY4q_e/the-challenge-derrick-steps-it-up/
https://www.cbs.com/shows/the-challenge/video/RYA43Dqs2bRJsgAtcZIZhN8zVVQ1FIxf/the-challenge-we-can-work-it-out/
https://www.cbs.com/shows/the-challenge/video/lJvc_Lkns9Q2NYkDfmsNQmeajXP3QjRm/the-challenge-the-10-000-pyramid/
すべてのエピソードのビデオリンクを自動的に抽出するにはどうすればよいですか?「ページソースを表示」することはできましたが、シーズン11の12/18エピソードしか表示されませんでした:(クロームで開く):ビューソース:https://www.cbs.com/shows/the-challenge/、検索の場合https://www.cbs.com/shows/the-challenge/video
、12件の一致が表示されます。
このページはメインページ内のエピソードとシーズンを「非表示」にするため、他のシーズン用の個別のURLはありません。私が今持っている解決策は、各ビデオのリンクアドレスを手動でコピーすることです...
このページは、(部分的に)javascriptを使用して動的に読み込まれます。たとえば、エピソード13〜18のリンクはそのように読み込まれます。
それらをキャプチャするには、ブラウザの[開発者]タブを使用する必要があります(これは長くて複雑な話です。たとえば、ここから読み始めることができます)。
そのリンクを取得すると、応答はjsonになります。これは、Python辞書として扱われ、目的の出力を生成します。
だからすべて一緒に:
import requests
cookies = {
'CBS_ADV_VAL': 'c',
'CBS_ADV_SUBSES_VAL': '4',
'ovvuid': '9f064779-4c06-49f1-9cdd-7e64e653145e',
'OptanonConsent': 'isIABGlobal=false&datestamp=Wed+Sep+09+2020+15%3A44%3A13+GMT-0400+(Eastern+Daylight+Time)&version=6.5.0&hosts=&consentId=d1c945ba-78ea-46e6-ba6f-5329085e06d8&interactionCount=1&landingPath=https%3A%2F%2Fwww.cbs.com%2Fshows%2Fthe-challenge%2F&groups=1%3A1%2C2%3A1%2C3%3A1%2C4%3A1%2C5%3A1',
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language': 'en-US,en;q=0.5',
'X-Requested-With': 'XMLHttpRequest',
'Referer': 'https://www.cbs.com/shows/the-challenge/',
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'TE': 'Trailers',
}
response = requests.get('https://www.cbs.com/shows/the-challenge/xhr/episodes/page/0/size/18/xs/0/season/11/', headers=headers, cookies=cookies)
links = response.json()
for entry in (links['result']['data']):
print(entry['url'])
出力:
/shows/the-challenge/video/IBWXQxtaPVmI40RnAACOc_zo0u13Ups1/the-challenge-blind-panic/
/shows/the-challenge/video/uFv8wFmvUFRKfiM29HVT3K_gGCZ4IWYS/the-challenge-last-men-standing/
/shows/the-challenge/video/9GP_ASLg9U_MmFvFmXPHO9liRzjdHhwI/the-challenge-don-t-bet-on-it/
など、全18話。次に、これらの各リンクをベースURL(https://www.cbs.com
)と連結して、最終的なリンクを形成できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加