爬取猫眼电影Top100电影单页数据,解析出电影名称、主演、上映时间、评分、图片地址存储数据到MySQL数据库代码
时间: 2024-09-19 13:16:43 浏览: 156
在Python中,我们可以使用`requests`、`BeautifulSoup`库来爬取和解析猫眼电影Top100的单页数据,然后通过`pymysql`库将其存储到MySQL数据库中。以下是一个简单的示例代码片段,假设数据位于一个HTML列表里,每个电影项都有相应的HTML元素:
```python
import requests
from bs4 import BeautifulSoup
import pymysql
# 定义数据库连接参数
db_config = {
"host": "your_host",
"user": "your_user",
"password": "your_password",
"database": "your_database",
}
# 网页URL
url = "https://maoyan.com/top100"
# 发起GET请求
response = requests.get(url)
html_content = response.text
# 解析HTML内容
soup = BeautifulSoup(html_content, 'lxml')
movie_list = soup.find('div', {'class': 'list-wrap'})
movies_data = []
for movie_item in movie_list.find_all('li'):
# 提取电影信息
title = movie_item.h3.text
actors = [actor.text for actor in movie_item.find_all('a', {'class': 'name js-name-link'})] # 假设演员名字在a标签内
release_date = movie_item.find('span', {'class': 'year'}).text
rating = movie_item.find('i', {'class': 'rating_num'}).text
image_url = movie_item.find('img')['src'] # 图片URL
movies_data.append({
'title': title,
'actors': actors,
'release_date': release_date,
'rating': rating,
'image_url': image_url
})
# 连接数据库
with pymysql.connect(**db_config) as conn:
cursor = conn.cursor()
# 创建表,如果不存在的话
create_table_sql = """
CREATE TABLE IF NOT EXISTS movie_top100 (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
actors TEXT,
release_date DATE,
rating FLOAT,
image_url VARCHAR(255)
);
"""
cursor.execute(create_table_sql)
# 插入数据
insert_sql = "INSERT INTO movie_top100 VALUES (%s, %s, %s, %s, %s, %s)"
for movie in movies_data:
cursor.execute(insert_sql, (None,) + tuple(movie.values()))
# 提交事务
conn.commit()
print("数据已存储到数据库.")
```
请注意,实际的代码可能需要根据网站的具体结构进行调整,特别是对于动态加载的内容或者需要登录才能访问的数据。此外,为了遵守网站的Robots协议,爬虫应尽量设置合理的延时,并且遵循网站的使用条款。
阅读全文