目标网页
准备工作
设置日志等级
设置robot规则
为了降低对网页的压力,设置下载延迟
更改默认请求头
新建需要的字段
开启管道
————————————————————
是Ajax请求获取数据
所以控制台勾选XHR筛选
查看Preview,找到需要的数据
和之前的步骤差不多,获取数据方式不同
def parse(self, response):
result = response.json()
for a in result['results']:
item = Spa1Item()
item['title'] = a['name'] + a['alias']
item['fraction'] = a['score']
item['country'] = '、 '.join(a['regions'])
item['time'] = a['minute']
item['date'] = a['published_at']
此页面上没有导演的数据,所以还要yield请求下一页面获取导演数据
点开随意一个电影
依旧是Ajax获取数据
分析网页url,可以看出此页面的url和作品的id有关
yield scrapy.Request(url=response.urljoin(f'/api/movie/{a["id"]}/'),
callback=self.parse_person,
meta={'item': item})
接着只要把directory的数据也存进item就行了
def parse_person(self, response):
result = response.json()
item = response.meta['item']
item['director'] = result['directors'][0]['name']
print(item)
yield item
运行代码得到数据