匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

【Python爬虫】如何使用Python爬取豆瓣电影Top250的数据?

【Python爬虫】如何使用Python爬取豆瓣电影Top250的数据?

豆瓣电影一直是电影爱好者阅读电影资讯、评论的重要平台之一,豆瓣电影也因其Top250电影榜单而备受关注。有没有想过,我们可以通过Python爬虫获取豆瓣电影Top250列表并进行分析和处理。本文将详细介绍如何使用Python爬虫获取豆瓣电影Top250的数据。

1. 确定爬取目标

首先,我们需要了解豆瓣电影Top250页面的结构,只有正确的识别页面元素,才能确定爬取目标。在豆瓣电影Top250页面上,我们可以看到每部电影的名称、导演、主演、上映时间、评分等信息,我们需要确定哪些信息是需要爬取的。在本例中,我们将采集以下数据:

- 电影名称
- 导演
- 主演
- 上映年份
- 国家/地区
- 电影类型
- 评分
- 评论数

在确定了爬取目标后,我们需要了解网页的结构,以便编写合适的代码爬取数据。

2. 分析网页结构

使用浏览器的开发人员工具或类似工具分析网页结构,查找需要爬取的数据所在的标签和类名。在本例中,我们查找到需要爬取的数据都在HTML代码的class为.item的div标签里。



我们可以使用BeautifulSoup库来解析HTML代码,使用正则表达式或CSS选择器来查找需要的标签。

3. 编写爬虫程序

在确定了爬取目标和网页结构后,我们可以开始编写Python爬虫程序了。

首先,我们需要导入需要的库:

```python
import requests
from bs4 import BeautifulSoup
import csv
```

然后我们需要访问豆瓣电影Top250页面,获取HTML代码:

```python
def get_html(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    html = requests.get(url, headers=headers).content
    return html
```

接着,我们需要解析HTML代码,查找需要爬取的信息:

```python
def get_movies(html):
    soup = BeautifulSoup(html, 'html.parser')
    movie_list_soup = soup.find('ol', attrs={'class': 'grid_view'})
    movie_name_list = []
    for movie_li in movie_list_soup.find_all('li'):
        detail = movie_li.find('div', attrs={'class': 'hd'})
        movie_name = detail.find('span', attrs={'class': 'title'}).getText()
        movie_name_list.append(movie_name)
        for tag in detail.find_all('span', attrs={'class': 'other'}):
            movie_name_list[-1] += tag.getText()
        # 导演,主演,上映年份,国家/地区,类型
        bd = movie_li.find('div', attrs={'class': 'bd'})
        movie_info = bd.find('p', attrs={'class': ''}).getText().replace('\n', '').strip()
        movie_name_list[-1] += '/' + movie_info
        rating_score = bd.find('span', attrs={'class': 'rating_num'}).getText()
        rating_num = bd.find_all('span')[-2].getText().replace('人评价', '').strip()
        movie_name_list[-1] += '/' + rating_score + '/' + rating_num
    return movie_name_list
```

在解析HTML代码后,我们可以将获取的数据保存到本地文件中,方便后续处理:

```python
def save_data(data, filename):
    with open(filename, 'w', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        for row in data:
            writer.writerow([row])
```

最后,我们将上述代码组合起来:

```python
def main():
    url = 'https://movie.douban.com/top250'
    html = get_html(url)
    movies = get_movies(html)
    save_data(movies, 'movies.csv')
```

运行代码后,我们可以看到movies.csv文件中包含了豆瓣电影Top250的数据。

4. 总结

本文介绍了如何使用Python爬虫获取豆瓣电影Top250的数据,包括了分析网页结构、编写爬虫程序等。通过本文,读者可以学习到如何使用Python爬虫获取网站数据,如何使用BeautifulSoup解析HTML代码等知识点。希望本文能够帮助读者学习Python爬虫的基础知识。