get_recommedation.py 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import requests
  2. import json
  3. def get_recommendation_video_list(page_id, page_size):
  4. url = "https://odin.sohu.com/odin/api/a/blockdata?origin=article"
  5. payload = json.dumps({
  6. "url": "//odin.sohu.com/odin/api/a/blockdata?origin=article",
  7. "pageId": "1744186073720NK8",
  8. "pvId": "1744186073657DQHXa2g",
  9. "mainContent": {
  10. "productId": "",
  11. "productType": "",
  12. "secureScore": "100",
  13. "categoryId": "13",
  14. "authorId": "121141867",
  15. "articleId": "877216434"
  16. },
  17. "resourceList": [
  18. {
  19. "tplCompKey": "recommendVideoFeed",
  20. "content": {
  21. "page": page_id,
  22. "requestId": "17441860918364TZ",
  23. "size": page_size,
  24. "productId": 1558,
  25. "productType": 13,
  26. "spm": "smpc.vd-land.end-rec"
  27. },
  28. "context": {
  29. "page_refer_url": "",
  30. "mkey": "channelId_13--mpid_877216434"
  31. },
  32. "adInfo": {},
  33. "spmCCode": "end-rec",
  34. "resourceId": "000000000000000000"
  35. }
  36. ]
  37. })
  38. headers = {
  39. 'Accept': 'application/json, text/plain, */*',
  40. 'Accept-Language': 'zh,zh-CN;q=0.9',
  41. 'Connection': 'keep-alive',
  42. 'Content-Type': 'application/json',
  43. 'Origin': 'https://www.sohu.com',
  44. 'Referer': 'https://www.sohu.com/a/877216434_121141867?scm=10001.325_13-109000.0.0.5_32',
  45. 'Sec-Fetch-Dest': 'empty',
  46. 'Sec-Fetch-Mode': 'cors',
  47. 'Sec-Fetch-Site': 'same-site',
  48. 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
  49. 'sec-ch-ua': '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"',
  50. 'sec-ch-ua-mobile': '?0',
  51. 'sec-ch-ua-platform': '"macOS"',
  52. 'Cookie': 'IPLOC=CN1200; SUV=250319174303GUDT; cto_bidid=DbraLl80TnZBSiUyRjd5Y3R3d3BPQ2gwNkhCQzFYcTR3cERUelpzdkVsOHIwbUx4VVB2Nm9obktXS1JicW00ZkZJbkY4MWtWTXJHajdKeEdIUEpnQ3ZNM2NNWFJRJTNEJTNE; _cc_id=16be057c82f6c7b9487f8e9de87093f8; cto_bundle=G-1cul95czh2RVh4SnRnZXRlUllFb0hyZFhKRkFiSHpWaU5JZDNNM0pKc25UMlUyQk9FcDYwRVNWcmc4VjdadmxDVyUyQmNhN3NydzJ6NVpJZSUyRjdHSnlhNVViSVUySDl0SCUyQk52blJFNk9VJTJCNTJZaVZHYzdUdUkwcHltWmkzR2d6aTI1TzNheFhkWiUyQjlvaGJkUldEQlElMkJOWTUlMkJTQSUzRCUzRA; gidinf=x099980107ee1a664f21e8892000bfb0cb568460d4f7; FCNEC=%5B%5B%22AKsRol-M9pfdhPRV6WdT0_UpWwGGHATDkhGhu3WhCRwchHNYyaiiIzdgxL07iMyYWnsT_EtmqDWtsEXTVncdSYtqnSPa5geKzsupz1uaDinhxC5vtZ5VYpyP2ce9ihomBxnBnoeGfP_Lbib3u5FF1RQacGdUubuKpg%3D%3D%22%5D%5D; clt=1743410197; cld=20250331163637; _ga=GA1.1.954524343.1743578691; reqtype=pc; _ga_DFBWYFE6Q0=GS1.1.1743578690.1.1.1743578734.16.0.0; cityIpLocation=61.48.133.26; beans_dmp=%7B%2210191%22%3A1744104695%2C%22admaster%22%3A1744104695%2C%22shunfei%22%3A1744104695%2C%22reachmax%22%3A1744104695%2C%22lingji%22%3A1744104695%2C%22yoyi%22%3A1744104695%2C%22ipinyou%22%3A1744104695%2C%22ipinyou_admaster%22%3A1744104695%2C%22miaozhen%22%3A1744104695%2C%22diantong%22%3A1744104695%2C%22huayang%22%3A1744104695%2C%22precisionS%22%3A1744104695%2C%22qunyi%22%3A1744104695%7D; _dfp=q4xXm1uuBqdI3QKRaKHbjDocPoUeGdyjTp29AM1Eak4%3D; hideAddDesktop=true; t=1744186073675'
  53. }
  54. response = requests.request("POST", url, headers=headers, data=payload)
  55. recommend_list = response.json()['data']['recommendVideoFeed']['list']
  56. for item in recommend_list:
  57. L.append(item)
  58. L = []
  59. for i in range(1, 20):
  60. try:
  61. get_recommendation_video_list(i, 30)
  62. except Exception as e:
  63. print(e)
  64. print("page: ", i)
  65. continue
  66. with open("877216434.json", "w") as f:
  67. f.write(json.dumps(L, ensure_ascii=False, indent=4))
  68. print("done")