沃梦达 / IT编程 / 数据库 / 正文

python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析

了解了题目要求。首先,这篇攻略是针对想要学习使用Python通过爬虫爬取猫眼电影和电影天堂的数据,并将数据存储到CSV和MySQL中的开发者。以下是完整攻略的步骤:

了解了题目要求。首先,这篇攻略是针对想要学习使用Python通过爬虫爬取猫眼电影和电影天堂的数据,并将数据存储到CSV和MySQL中的开发者。以下是完整攻略的步骤:

1. 确定需求

在开始编写爬虫之前,我们需要先明确自己需要爬取哪些数据,比如需要爬取电影名称、导演、演员、上映时间等信息。然后我们需要确定数据存储的方式,常用的有CSV和MySQL,两种存储方式各有优缺点,需要根据实际需求决定。

2. 选择合适的爬虫框架

根据需求,我们需要选择一个合适的爬虫框架,比较常用的有Scrapy和BeautifulSoup两种。其中,Scrapy功能比较强大,如果爬取的数据比较大、网站也比较复杂,可以优先考虑使用Scrapy。而如果网站比较简单,只需要爬取一些固定的信息,可以使用BeautifulSoup。

3. 编写爬虫代码

根据选定的爬虫框架,可以比较方便地编写爬虫代码。比如使用Scrapy框架,我们需要编写爬虫类,设置爬取的起始URL,以及如何从HTML页面中提取所需信息等。如果使用BeautifulSoup,我们需要使用requests库发送HTTP请求,然后解析响应的HTML页面,提取所需信息。

4. 存储数据

在爬虫代码中,需要将爬取到的数据存储到CSV或MySQL中。如果选择CSV存储,需要使用Python内置的csv库实现,非常简单;如果选择MySQL存储,需要使用Python提供的MySQL API,如PyMySQL等,连接MySQL数据库,创建表格,然后将数据插入表格中。

5. 编写MySQL存储过程

如果我们将数据存储到MySQL数据库中,可以使用MySQL存储过程来进一步优化代码。MySQL存储过程可以将多个SQL语句封装为一个可重用的过程,方便调用。我们可以编写一个存储过程来创建数据表、插入数据等操作,然后在Python代码中调用该存储过程。

至此,完整攻略已经介绍完毕。下面我们来看一下示例:

示例1:使用Scrapy框架爬取猫眼电影数据并存储到CSV中

首先,我们需要安装Scrapy和csv库:

pip install scrapy
pip install csv

接下来,我们编写Scrapy爬虫,请注意代码中注释的部分:

import scrapy
import csv

class MaoyanSpider(scrapy.Spider):
    name = 'maoyan'
    allowed_domains = ['maoyan.com']
    start_urls = ['https://maoyan.com/films?showType=3']
    def parse(self, response):
        movies = response.xpath('//div[@class="movie-item-hover"]')
        with open('maoyan.csv', 'w', newline='', encoding='utf-8') as csvfile:
            fieldnames = ['title', 'actors', 'release_time']
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
            writer.writeheader()
            for movie in movies:
                title = movie.xpath('./a/div/div[1]/span[1]/text()').get()
                actors = movie.xpath('./a/div/div[1]/span[2]/text()').get().strip()
                release_time = movie.xpath('./a/div/div[2]/text()').get().strip()
                writer.writerow({'title': title, 'actors': actors, 'release_time': release_time})

这个爬虫会爬取猫眼电影网的“正在热映”页面,提取每个电影的名称、演员和上映时间,并将数据存储到名为maoyan.csv的CSV文件中。

示例2:使用BeautifulSoup爬取电影天堂数据并存储到MySQL中

我们需要安装BeautifulSoup和PyMySQL:

pip install beautifulsoup4
pip install pymysql

然后,我们编写BeautifulSoup爬虫,请注意代码中注释的部分:

import requests
from bs4 import BeautifulSoup
import pymysql

# 连接MySQL
db = pymysql.connect("localhost", "root", "password", "test")

# 创建电影表格
cursor = db.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS `movies` (
                 `id` INT AUTO_INCREMENT PRIMARY KEY, 
                 `title` VARCHAR(255), 
                 `actors` VARCHAR(255),
                 `release_time` VARCHAR(255))''')

# 爬取电影天堂数据
url = "https://www.dy2018.com/"
response = requests.get(url)
response.encoding = 'gbk'
soup = BeautifulSoup(response.text, 'html.parser')
movies = soup.select(".co_content8 table tr")
for movie in movies[1:]:
    title = movie.select("a")[1].text
    actors = movie.select("td:nth-of-type(2)")[0].text.strip()
    release_time = movie.select("td:nth-of-type(4)")[0].text.strip()

    # 插入MySQL
    cursor.execute('''INSERT INTO `movies` (`title`, `actors`, `release_time`) VALUES (%s, %s, %s)''',
                   (title, actors, release_time))
    db.commit()

这个爬虫会爬取电影天堂的首页,提取每个电影的名称、演员和上映时间,并将数据存储到一个名为movies的MySQL表格中。

希望以上攻略和示例能对你有所帮助。如果您在实践中遇到问题,可以留言求助。

本文标题为:python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析