爬虫实战小案例

软件资讯3个月前发布 admin
2 0

Crawler practical small case Python programming information
一、项目简介

本项目是一个爬虫实战小案例,旨在介绍如何使用Python的第三方库BeautifulSoup和requests来爬取指定页面的数据。本案例以爬取猫眼电影Top100为例,来展示爬虫实现的流程和细节。通过学习本案例,可以帮助读者入门Python爬虫,了解如何解析HTML页面和提取需要的数据。

二、实现步骤

1. 获取页面信息

使用requests库发送get请求获取指定页面的HTML文档。

import requests

url = 'https://maoyan.com/top100'
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'}

response = requests.get(url, headers=header)

if response.status_code == 200:
    print('页面获取成功')
    html = response.text
else:
    print('页面获取失败')

2. 解析HTML文档

使用BeautifulSoup库解析HTML文档,获取需要的数据。通过观察页面HTML源代码,可以发现当前top100页面的电影信息都在div标签class属性为”movie-item-info”的标签中。所以我们只需要解析该标签,即可获取每个电影的信息。

import requests
from bs4 import BeautifulSoup

url = 'https://maoyan.com/top100'
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'}

response = requests.get(url, headers=header)

if response.status_code == 200:
    print('页面获取成功')
    html = response.text
else:
    print('页面获取失败')
    
soup = BeautifulSoup(html, 'html.parser')
movie_list = soup.find_all('div', class_='movie-item-info')

3. 提取需要的数据

对于每个电影的信息,我们需要获取其排名、电影名称、主演、上映时间和评分。通过分析每个div标签下包含哪些信息,我们可以编写如下代码来提取需要的数据。

import requests
from bs4 import BeautifulSoup

url = 'https://maoyan.com/top100'
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'}

response = requests.get(url, headers=header)

if response.status_code == 200:
    print('页面获取成功')
    html = response.text
else:
    print('页面获取失败')
    
soup = BeautifulSoup(html, 'html.parser')
movie_list = soup.find_all('div', class_='movie-item-info')

for movie in movie_list:
    # 获取电影排名
    rank = movie.find('div', class_="movie-item-number").text.strip()
    # 获取电影名称
    name = movie.find('a', class_="movie-name").text.strip()
    # 获取电影主演和上映时间
    actor_and_time = movie.find('p', class_="star").text.strip()
    # 分离主演和上映时间
    actor = actor_and_time.split('主演:')[1].split('\n')[0]
    time = actor_and_time.split('上映时间:')[1]
    # 获取评分
    score = movie.find('p', class_="score").text.strip()
    # 打印结果
    print(rank, name, actor, time, score)

三、代码分析

通过学习本案例,我们可以详细了解Python爬虫的工作流程和实现细节。首先我们需要发送HTTP请求获取指定页面的HTML文档,然后使用BeautifulSoup库解析HTML文档,最后提取需要的数据。

值得注意的是,为了避免网站的反爬虫机制导致请求失败,我们要在请求头中添加User-Agent等信息。同时,为了提高效率,可以使用多线程/协程等方式进行优化。在实际使用中,我们还需要注意遵守爬虫的相关法律法规,不做违规操作。

总之,通过学习本案例,读者可以掌握Python爬虫的基础知识和实践技能,为未来更复杂的项目做好准备。

© 版权声明

相关文章

暂无评论

暂无评论...
小吃培训网