爬取豆瓣电影top250的电影数据并存入数据库代码
时间: 2023-08-30 08:06:50 浏览: 186
爬取豆瓣电影Top250数据
5星 · 资源好评率100%
以下是使用Python和MySQL数据库爬取豆瓣电影top250的电影数据并存入数据库的示例代码:
```
import requests
from bs4 import BeautifulSoup
import pymysql
# 建立数据库连接
db = pymysql.connect(host='localhost', user='root', password='password', database='douban', port=3306)
# 获取网页内容
def get_html(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
else:
return None
# 解析网页内容
def parse_html(html):
soup = BeautifulSoup(html, 'html.parser')
movie_items = soup.find_all('div', class_='item')
for item in movie_items:
# 获取电影名称
name = item.find('span', class_='title').get_text()
# 获取电影评分
rating = item.find('span', class_='rating_num').get_text()
# 获取电影导演和演员信息
info = item.find('div', class_='bd').p.get_text().strip().split('\n')
# 获取电影上映年份和国家
year_and_country = info[1].strip().split('/')
year = year_and_country[0].strip()
country = year_and_country[1].strip()
# 获取电影类型
genres = info[0].strip()
# 获取电影描述
description = item.find('span', class_='inq').get_text() if item.find('span', class_='inq') else ''
# 将电影信息存入数据库
cursor = db.cursor()
sql = "INSERT INTO movies(name, rating, year, country, genres, description) VALUES('{}', '{}', '{}', '{}', '{}', '{}')".format(name, rating, year, country, genres, description)
cursor.execute(sql)
db.commit()
# 程序入口
if __name__ == '__main__':
for i in range(0, 250, 25):
url = 'https://movie.douban.com/top250?start={}&filter='.format(i)
html = get_html(url)
parse_html(html)
# 关闭数据库连接
db.close()
```
在这个示例中,我们使用requests库发送HTTP请求,并使用BeautifulSoup库解析HTML响应。我们将电影信息存储在MySQL数据库中,使用pymysql库连接到数据库并执行SQL语句。最后,我们循环遍历每一页的电影列表,并将每个电影的信息存储到数据库中。
阅读全文