了解了题目要求。首先,这篇攻略是针对想要学习使用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存储过程解析 - Python技术站