用Python爬取电影信息和图片:零基础教程(电影)

在这篇教程中,我们将一步步介绍如何使用Python爬取喜剧电影的信息和图片。如果你是零基础或者对爬虫不太了解,也不用担心,我们将会详细解释每一个细节。

第一步:环境设置和库导入

首先,我们需要在计算机上安装Python和相关的库。Python是一种流行的编程语言,我们将利用它来编写我们的爬虫程序。同时,我们还需要安装一些Python库来帮助我们进行网络请求、解析网页等操作。这里我们需要安装的库有:

  • requests:用于发送HTTP请求和获取网页内容。
  • lxml:用于解析HTML和XML文档。
  • re:Python的正则表达式库,用于从文本中提取信息。
  • os:用于文件和目录操作。
  • time:用于控制程序的时间间隔。
  • random:用于生成随机数,例如用于模拟用户操作时的随机等待时间。

你可以使用pip来安装这些库,比如在命令行中输入以下命令:

pip install requests lxml

第二步:设置请求头部信息

在发送HTTP请求时,为了避免被网站识别为机器人而拒绝访问,我们需要设置一个合适的请求头部信息。请求头部信息中包含了我们访问网站时的用户代理信息,模拟了一个真实的浏览器访问。

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
}

第三步:发送HTTP请求获取网页内容

我们使用requests库来发送HTTP请求,并获取网页的HTML内容。这里以一个电影网站为例,假设电影列表页面的URL为https://example.com/movies

import requests

url = 'https://example.com/movies'
res = requests.get(url=url, headers=header)
html_text = res.text

第四步:解析网页内容提取信息

接下来,我们需要解析HTML内容,提取我们需要的信息,比如电影的标题、链接等。这里我们可以使用正则表达式或者更方便的lxml库来进行解析。

from lxml import etree

tree = etree.HTML(html_text)
movie_titles = tree.xpath('//div[@class="movie-title"]/a/text()')
movie_links = tree.xpath('//div[@class="movie-title"]/a/@href')

第五步:访问电影详情页面获取更多信息

现在我们有了电影的标题和链接,接下来我们可以访问每个电影的详情页面,获取更多详细信息,比如电影的描述、图片等。

for link in movie_links:
    movie_res = requests.get(url=link, headers=header)
    movie_html_text = movie_res.text
    # 解析电影详情页面,获取电影描述、图片等信息

第六步:保存信息到文件

最后一步是将我们获取的电影信息保存到文件中,比如保存电影标题和链接到一个文本文件,保存电影图片到本地文件夹等。

# 将电影标题和链接保存到文本文件
with open('movie_list.txt', 'w', encoding='utf-8') as file:
    for title, link in zip(movie_titles, movie_links):
        file.write(f'{title}: {link}\n')

# 保存电影图片到本地文件夹
for i, image_link in enumerate(movie_image_links, start=1):
    image_res = requests.get(image_link, headers=header)
    with open(f'movie_images/{i}.jpg', 'wb') as image_file:
        image_file.write(image_res.content)

部分代码

import os
import time
import re

from urllib.parse import urljoin
from lxml import etree
import requests
import random

header = {

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
}
# 设置爬取的页数
for i in range(1, 25):
    url = f'https://dytt89.com/14/index_{i}.html'
    # https://www.dytt89.com/5/

# 。。。。。。。。。。。。。。

    # 使用正则表达式提取所有匹配的<a>标签中的href、class和title
    matches = re.findall(r'<a\le=["\'](.*?)["\']>(.*?)</a>',
                         html_text)

    # 检查匹配结果并输出内容
    for match in matches:
        href_content = match[0]


        print(f'{title_content}href内容: {href_content}')



        # print(html_text)



            if response.content is None:
                print(f'{href_content}请求出现异常')
                time.sleep(random.randint(1, 3))
                try:
                    response = requests.session().get(src_content, headers=header, timeout=100)
                except:
                    try:
                        time.sleep(1)
                        response = requests.session().get(src_content, headers=header, timeout=100)
                    except:
                        print('22222')

            # 确保保存图片的文件夹存在
            if not os.path.exists(f"喜剧片/{title_content}"):
                os.makedirs(f"喜剧片/{title_content}")

            # 根据图片的位置命名文件
            if i == 1:
                filename = "封面.jpg"
            elif i == 2:
                filename = "截图.jpg"
            else:
                filename = f"图片_{i}.jpg"

            # 写入图片文件
            with open(f"喜剧片/{title_content}/{filename}", "wb") as f:
                f.write(response.content)

            print(f'已保存图片{title_content}: {filename} - {src_content}')


        if not os.path.exists(f"喜剧片/{title_content}"):
            os.makedirs(f"喜剧片/{title_content}")

        # 保存处理后的文本到 "简介.txt" 文件

        with open(f"喜剧片/{title_content}/简介.txt", 'w', encoding='utf-8') as file:
      

        print(f"{title_content}种子已保存")

        # break


结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

到此为止,我们已经完成了一个简单的Python爬虫程序,可以爬取喜剧电影信息和图片,并将信息保存到文件中。当然,实际应用中还会有更多的细节和处理方式,但这里的教程已经给出了一个基本的框架和思路。希望对你有所帮助!

下载源码

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值