ZJY178 2022-03-27 19:53 采纳率: 100%
浏览 39
已结题

爬Ajax地址的结果与network代码不同,缺失一部分变成null怎么解决?

事情是这样的,懵新需要爬:
http://film.mtime.com/search/movies/movies?type=year&word=2020
该网址是Ajax加载的,于是从F12里找到了内容列表的Ajax请求地址,
我添加了headers,试过用post、session、urllib.request和parse,但是输出仍是如下:

img

而网页源代码是:

img


img

可以看到爬取的结果在 "data":{"movies":null 处缺失了。

求高人帮忙QAQ
另:selenium也尝试过,但不知道为什么爬不出目标代码

我的爬取目标是这个:

img

以下是我的代码尝试:


'''列表'''
import requests
import time

headers = {
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.15 Safari/537.36',
  'referer': 'http://film.mtime.com/search/movies/movies/',
  'Cookie':'_tt_=4C0AFCA656D18084A23E7B6412F25E1B; _mi_=d3a134e125f4fa820a77efdb9d273749; _mu_=74E13B5A06A0337502CB85D0824A4D36; searchHistoryCookie=%u4F60%u597D%u674E%u7115%u82F1; Hm_lvt_07aa95427da600fc217b1133c1e84e5b=1646656056,1647854587,1647913019,1648107725; Hm_lpvt_07aa95427da600fc217b1133c1e84e5b=1648192257',
  'Content-Encoding': 'gzip',
  'Accept-Language': 'zh-CN,zh;q=0.9',
  'Connection': 'keep-alive',
  'Content-Type': 'application/x-www-form-urlencoded',
  'X-Requested-With': 'XMLHttpRequest'
}

year = 2020
params = {
    'genreTypes':'' ,
    'area':'' ,
  'type':'2020',
  'pageIndex':'1',
  'pageSize':'20',
  'searchType':'0',
  "locationId":'290',
  'keyword': '',
}

url='http://front-gateway.mtime.com/mtime-search/search/unionSearch2'

#遵守robots协议
ROBOTSTXT_OBEY = True
#并发请求个数(越小越慢)
CONCURRENT_REQUESTS = 1
#下载延迟时间(越大请求越慢)
DOWNLOAD_DELAY = 60
#默认False;为True表示启用AUTOTHROTTLE扩展
AUTOTHROTTLE_ENABLED = True
#默认3秒;初始下载延迟时间
AUTOTHROTTLE_START_DELAY = 60
#默认60秒;在高延迟情况下最大的下载延迟
AUTOTHROTTLE_MAX_DELAY = 60
#使用httpscatch缓存
HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 1
HTTPCACHE_DIR = 'httpcache'
HTTPCACHE_IGNORE_HTTP_CODES = []
HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'


'''
#模拟浏览器爬
from urllib import request, parse
import urllib.request
import urllib.parse
import json
data = urllib.parse.urlencode(params).encode('utf-8')
response = request.Request(url=url, data=data, headers=headers, method='POST')

import ssl# 全局取消证书验证
ssl._create_default_https_context = ssl._create_unverified_context

response = urllib.request.urlopen(response)
print(response.read().decode('utf-8'))


'''
#session会话爬
session = requests.session()
res = session.post(
  url=url,
  params=params,#json=params也没有目标内容
  headers=headers,timeout=None)
print(res.content)

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2022-03-27 20:32
    关注

    没问题啊?

    img

    
    import requests
    import time
     
    headers = {
      'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
      'referer': 'http://film.mtime.com/search/movies/movies/',
      'Content-Type': 'application/x-www-form-urlencoded',
      'X-Requested-With': 'XMLHttpRequest'
    }
    postData={"keyword":"2020","pageIndex":"1","pageSize":"20","searchType":"0","locationId":"290","genreTypes":"","area":"","year":""}
    url='http://front-gateway.mtime.com/mtime-search/search/unionSearch2'
    r=requests.post(url,headers=headers,data=postData).json()
    
    for movie in r['data']['movies']:
        print(movie['movieId'],movie['name'])
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 创建了问题 3月27日

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加