Scrapy爬取JSON文件中的数据为空?

问题描述

我是第一次接触Scrapy框架。在Scrapy中爬取JSON文件中的数据时,用print检测发现为空,不知道是什么回事,请大神指教!

问题出现的环境背景及自己尝试过哪些方法

Python的环境是Python 3.7。尝试网上说的response.text()无效。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
import scrapy
import json
from scrapy.http import Request
from urllib import parse

from MovieSpider.MovieSpider.items import MoviespiderItem
class MovieSpider(scrapy.Spider):

name = 'MovieSpider'
allowed_domains = ['movie.douban.com']
start_urls = ['https://movie.douban.com/j/search_subjects?type=movie&tag=%E5%86%B7%E9%97%A8%E4%BD%B3%E7%89%87&sort=rank&page_limit=20&page_start=0']

def parse(self, response):
    list = json.loads(response.text())
    print(list)

你期待的结果是什么?实际看到的错误信息又是什么?

无报错,但是输出为空,求各位大神指教!

阅读 6.5k
4 个回答

试了一下:
DEBUG: Crawled (403) <GET https://movie.douban.com/robo...; (referer: None)
DEBUG: Crawled (403) <GET https://movie.douban.com/j/se...;tag=%E5%86%B7%E9%97%A8%E4%BD%B3%E7%89%87&sort=rank&page_limit=20&page_start=0> (referer: None)

所以需要在setting里面添加User-Agent,以及把ROBOTSTXT_OBEY改为False

你这贴的代码,是不全的吧?看着你的代码都行不通啊。
试试这个获取json数据

import requests
url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E5%86%B7%E9%97%A8%E4%BD%B3%E7%89%87&sort=rank&page_limit=20&page_start=0'
request = requests.get(url)
json_list = request.json()
新手上路,请多包涵

要学会用scrapy shell https://movie.douban.com/...
做一下测试,我估计十有八九你的HTTP请求头写的不对,看看返回的代码是不是403?

新手上路,请多包涵

yield item 少了个。 或者 return item 少了个。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题