爬虫豆瓣电影top250到mysql
时间: 2023-12-31 19:05:33 浏览: 153
以下是爬取豆瓣电影top250并存储到MySQL数据库的步骤:
1. 导入需要的库和模块,包括pymysql、BeautifulSoup、urllib和xlwt等。
2. 创建一个名为“douban”的数据库,并在其中创建一个名为“movies”的表,用于存储电影信息。表中包含5个字段:id、title、score、num、url,分别表示电影编号、电影名称、电影评分、评分人数和电影链接。
3. 编写爬虫代码,从豆瓣电影top250的网页中获取电影信息,并将其存储到一个列表中。
4. 遍历列表,将每个电影的信息插入到MySQL数据库中。
下面是具体的代码实现:
```python
import pymysql
from bs4 import BeautifulSoup
from urllib import request
# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='123456', port=3306)
cursor = db.cursor()
# 创建douban数据库
cursor.execute('CREATE DATABASE douban DEFAULT CHARACTER SET utf8mb4')
# 选择douban数据库
cursor.execute('USE douban')
# 创建movies表
sql = '''
CREATE TABLE movies (
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
score FLOAT NOT NULL,
num INT(11) NOT NULL,
url VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
'''
cursor.execute(sql)
# 爬取豆瓣电影top250的网页
url = 'https://movie.douban.com/top250'
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.3'}
req = request.Request(url=url, headers=headers)
response = request.urlopen(req)
html = response.read().decode('utf-8')
# 解析网页,获取电影信息
soup = BeautifulSoup(html, 'html.parser')
movies = soup.find('ol', class_='grid_view').find_all('li')
data = []
for movie in movies:
title = movie.find('span', class_='title').get_text()
score = float(movie.find('span', class_='rating_num').get_text())
num = int(movie.find('div', class_='star').find_all('span')[3].get_text()[:-3])
url = movie.find('a')['href']
data.append((title, score, num, url))
# 将电影信息插入到MySQL数据库中
for item in data:
cursor.execute('INSERT INTO movies(title, score, num, url) values(%s, %s, %s, %s)', item)
db.commit()
# 关闭数据库连接
cursor.close()
db.close()
```
阅读全文