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

咨询电话:4000806560

Python爬虫实战:入门到实践详细解析

Python 爬虫实战:入门到实践详细解析

Python 爬虫已经成为了现代程序员必须掌握的技能之一。而对于初学者来说,最好的入门方式可能就是实战了。本文将通过一个具体的实例,带领大家一步一步掌握爬虫的基本原理和技术流程。

实例:爬取猫眼电影 Top 100

首先,我们需要确定我们的目标,本次实例的目标是爬取猫眼电影 Top 100 的数据。猫眼电影是国内最大的电影票务平台之一,Top 100 是猫眼电影评选出来的当前最受欢迎的电影。我们将利用 Python 爬虫技术,获取 Top 100 的电影名称、评分、上映时间、电影类型等信息。

第一步:分析目标网站

在开始爬取网站之前,我们需要对目标网站进行分析。我们需要找到目标网站的 URL,确定需要爬取的数据在哪个页面上,以及需要传递哪些参数。通过查看猫眼电影的 Top 100 页面,我们可以发现其 URL 为:http://maoyan.com/board/4。在 Chrome 浏览器中打开该页面,并按 F12 键,打开开发者工具,选择 Network 标签页,可以看到该页面请求了一个 AJAX 接口,如下图所示:

![image1](https://img-blog.csdnimg.cn/20211020145228836.png)

我们可以通过分析该接口,得出请求方法、请求参数、请求头信息以及返回数据格式等。接下来,我们可以利用 Python 的 requests 库模拟请求该接口,并解析返回的数据。

第二步:爬取数据

在 Python 中,我们可以通过 requests 库发送 HTTP 请求,并通过 Beautiful Soup 库解析返回的 HTML 页面内容。在本实例中,由于我们要爬取的是 AJAX 接口的数据,因此我们可以直接使用 requests 库请求该接口,并获取返回的 JSON 格式数据。接下来,我们可以通过循环遍历返回的数据,获取每部电影的具体信息。

下面是完整代码实现:

```python
import requests
from bs4 import BeautifulSoup
import json

def get_top100():
    url = 'https://maoyan.com/board/4'
    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'}
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    tags = soup.select('#app > div > div > div > dl > dd')
    for tag in tags:
        name = tag.select_one('div > div > div.movie-item-info > p.name > a').get('title')
        star = tag.select_one('div > div > div.movie-item-info > p.score > i').get_text()
        release_time = tag.select_one('div > div > div.movie-item-info > p.releasetime').get_text()
        movie_type = tag.select_one('div > div > div.movie-item-info > p:nth-of-type(3)').get_text()

        print(name, star, release_time, movie_type)

def get_top100_ajax():
    url = 'https://maoyan.com/board/4'
    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'}
    response = requests.get(url, headers=headers)
    json_data = json.loads(response.text)
    movie_list = json_data['data']['movies']
    for movie in movie_list:
        name = movie['name']
        star = movie['score']
        release_time = movie['releaseTime']
        movie_type = movie['movieType']

        print(name, star, release_time, movie_type)

if __name__ == '__main__':
    get_top100()
    get_top100_ajax()
```

上述代码中,我们定义了两个函数:get_top100() 和 get_top100_ajax()。get_top100() 函数通过 requests 库请求目标 URL,并通过 Beautiful Soup 库解析 HTML 页面,获取到每部电影的具体信息。而 get_top100_ajax() 函数则直接请求 AJAX 接口,获取到的 JSON 数据中包含每部电影的具体信息。最后,我们在 main 函数中分别调用这两个函数,并执行程序,即可获取到猫眼电影 Top 100 的所有信息。

通过上述代码实现,我们可以看到 Python 爬虫技术的基本原理和技术流程,包括分析目标网站、发送 HTTP 请求、解析返回的 HTML 或 JSON 数据、数据清洗和存储等。当然,Python 爬虫技术还有很多高级特性和技巧,本文只是简单入门。在实际应用中,我们还需要根据具体需求灵活应用相应的技术和工具,才能更好地完成爬虫任务。