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 爬虫技术还有很多高级特性和技巧,本文只是简单入门。在实际应用中,我们还需要根据具体需求灵活应用相应的技术和工具,才能更好地完成爬虫任务。