爬虫练习-爬取豆瓣电影排行榜

296 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情

我们爬虫使用request库,我们需要找到电影的接口,再把接口里电影的数据爬取下来就好了。

先上代码,后面细说

import urllib.request

url = "https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=0";

Agent = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}

# 1.请求对象的定制
request = urllib.request.Request(url=url, headers=Agent)

# 2.获取响应的数据
response = urllib.request.urlopen(request);
content = response.read().decode('utf-8')

# 下载数据到本地
with open('douban.json','w',encoding='utf-8') as fp:
    fp.write(content)


准备工作

我们先打开豆瓣电影,摁下F12,找到Network这一栏,摁下F5刷新 在这里插入图片描述 可以看到出现了很多的请求,但我们要找到我们需要的。

我们先想一个问题, 因为电影网站的数据量是十分庞大的, 渲染如此庞大的数据只有一种可能,就是通过JS发送ajax请求, 来从后端获取数据再渲染到页面上。

那么我们的数据源就明确了, 接下来就需要打开F12控制台中的Network, 选中XHR, 然后刷新页面就找到了数据源, 下面Preview显示的就是我们需要的电影数据 在这里插入图片描述

我们先把url和Agent复制下来,准备工作就完成了 在这里插入图片描述 在这里插入图片描述

import urllib.request

url = "https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=0";

Agent = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}

在这里插入图片描述

请求对象的定制

在Request源码里我们可以看到, 因为我们传参数的位置跟在Request方法中的参数位置不一样,所有我们要url=url, headers=Agent

在这里插入图片描述

# 1.请求对象的定制
request = urllib.request.Request(url=url, headers=Agent)

获取响应的数据

# 2.获取响应的数据
response = urllib.request.urlopen(request);
centent = response.read().decode('utf-8');

打印出来看看有没有问题 在这里插入图片描述 是这个,我们现在就保存我们的数据

数据下载到本地

我们在接口那可以看到它是json的数据,所以我们也用json数据保存下来

在这里插入图片描述

# 下载数据到本地
with open('douban.json','w',encoding='utf-8') as fp:
    fp.write(content)

open方法默认使用gdk编码,如果数据里面有汉字,我们需要在open方法指定编码格式为utf-8,也就是encoding='utf-8'

在这里插入图片描述

保存下来了,去看看成果 在这里插入图片描述 最开始下载下来的是一条长串,如果是pycharm就全部选中,然后crtl+alt+L就能自动整理成现在更直观的样子