爬取豆瓣Top250电影数据一直是爬虫小白的入门练手项目,下面就来分享一下自己的爬取过程。
开始之前,先简单写一下需求和实现思路。
需求:
爬取豆瓣电影Top250的数据,数据包含排名、电影名称、导演、主演、上映年份、国家、电影分类、评分、评价人数、简介,将爬取结果存至Excel文件中。
实现思路:
打开浏览器访问https://movie.douban.com/top250,按下’F12’打开开发者工具,进入Network选项卡,刷新一下页面。可以看到一个名称为’top250’的请求,该请求的Response就是页面源码。点击下一页,请求变成了’top250?start=25&filter=’,再往后翻,发现每翻一页’start’参数增加25。那么,只要根据start参数循环构造请求的url,再根据需求进行源码的解析,最后将结果存入Excel文件即可完成爬取。
源码:
import requests
import re
from bs4 import BeautifulSoup
from lxml import etree
from common.wxls import Xls
'''
实现思路
1.request请求单页的源码
2.解析页面源码获取排名、电影名称、导演、主演、上映年份、国家、电影分类、评分、评价人数、简介
3.循环请求10页(豆瓣Top250电影共10页,每页25条数据)
4.保存数据至Excel中
'''
#Excel文件的列头
HEADER = ['排名','电影名称','导演','主演','上映年份','国家','电影分类','评分','评价人数','简介']
#结果数据的容器
DATA = []
def get_page(page_num):
'''
获取页面源码
:param page_num:页码 0-9
:return: 页面源码
'''
start = page_num * 25
url = f'https://movie.douban.com/top250?start={start}'
headers = {
'Host':'movie.douban.com',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36'
}
response = requests.get(url,headers=headers)
if response.status_code == 200:
return response.text
def parse_page_by_bs4(page):
'''
通过BeatifulSoup的方法选择器解析页面
:param page: 页面源码
:return:
'''