带你用Python爬取豆瓣电影Top250

刚开始使用python爬取网页信息的小伙伴一般都会利用爬取豆瓣电影Top250来作为自己的一个基础实战项目,接下来我将使用基础的爬虫库演示一下这个案例。

项目分析

这个项目我们需要的库有:requests库,BeautifulSoup库,openpyxl库

我们首先打开豆瓣电影top100查看一下网页的结构

带你用Python爬取豆瓣电影Top250_第1张图片

 

带你用Python爬取豆瓣电影Top250_第2张图片

可以看到每页的电影共有25个总共10页,这样我们就有了我们的总体思路,首先我们解析网页,可以得到页面各个电影的信息,然后通过翻页获取下一个页面的url继续第一页的操作,最后写入到excel中。

现在我们知道我们要解决的问题有个:第一获取每个电影信息,第二实现翻页,第三excel的读写。

下面我们一步一步解决我们的问题

  1. 要获取每个电影的信息,我们来查看一下网页的源代码

带你用Python爬取豆瓣电影Top250_第3张图片

可以看到每个电影的信息都存在‘li’标签中,每个电影标题,详细页url,评分等信息都可以读取,接下来我们会用BeautifulSoup库进行网页解析与信息读取

2. 第二实现翻页

我们进行翻页可以看到1,2,3的url为

https://movie.douban.com/top250
https://movie.douban.com/top250?start=25&filter=
https://movie.douban.com/top250?start=50&filter=

这样我们很容易找到规律进行翻页操作

3. excel的读写

我们使用openpyxl库,openpyxl是一个用来读写Excel 2010 xlsx/xlsm 文件的Python库。文档地址[openpyxl官方文档](https://openpyxl.readthedocs.io/en/default/)

我们只要使用其中的append方法向其中添加信息。

代码编写

导入库

import requests
from bs4 import BeautifulSoup
import openpyxl

我们的主体框架

带你用Python爬取豆瓣电影Top250_第4张图片

进行网页请求

def getHTMLtext(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"
    }
    try:
        r = requests.get(url=url, headers=headers)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        print('访问失败')

网页解析获取数据

def parseHTMLtext(html,name_list,info_list):
    soup=BeautifulSoup(html,'html.parser')
    li=soup.find('ol',class_="grid_view").find_all('li')

    # print(li)
    for info in li:
        name_list.append(info.find('span',class_='title').string)
        info_list.append(info.find('span',class_='rating_num').string)
    pass

翻页操作

def nextPage(page):
    url='https://movie.douban.com/top250?start='+str(page*25)
    return url

信息保存

def savelxsl(index_list,name_list,info_list):
    wb=openpyxl.Workbook()
    ws=wb.active
    ws.append(['序号', '名称', '评分'])
    for index in range(len(index_list)):
        ws.append([index_list[index],name_list[index],info_list[index]])
    wb.save('豆瓣电影top250.xlsx')
    pass

主函数

def main():
    start_url='https://movie.douban.com/top250'
    index_list=range(1,251)
    name_list=[]
    info_list=[]
    url=start_url
    for page in range(1,11):
        html=getHTMLtext(url)
        parseHTMLtext(html,name_list,info_list)
        url=nextPage(page)
        pass
    savelxsl(index_list,name_list,info_list)
    print('下载成功')
    pass

这就是爬虫的所有代码,我也是python爬虫里的一只小白,代码可能并不完善但还是希望得到大家的支持,以后我也会推出更多的文章来一起学习!!

我们的爬虫结束了,接下来我们看看最终的结果:

带你用Python爬取豆瓣电影Top250_第5张图片

 

这里我也只是爬取了电影名称和评分,获取更多的内容大家可以下去自己尝试一下。

你可能感兴趣的:(python)