Python爬取豆瓣Top250并存储至mysql数据库
时间: 2024-09-19 22:03:10 浏览: 41
Python通过requests库可以发送HTTP请求获取网页数据,然后BeautifulSoup或Scrapy库可以帮助解析HTML内容。针对豆瓣电影Top250的爬取,你可以按照以下步骤操作:
1. **安装必要的库**:
首先需要安装`requests`, `beautifulsoup4`, `lxml`以及`pymysql`等库。使用命令行运行以下命令:
```
pip install requests beautifulsoup4 lxml pymysql
```
2. **编写爬虫脚本**:
使用Python创建一个文件,例如`douban_spider.py`,编写以下代码片段:
```python
import requests
from bs4 import BeautifulSoup
import pymysql
# 豆瓣Top250页面URL
url = 'https://movie.douban.com/top250'
def get_html(url):
response = requests.get(url)
response.raise_for_status() # 检查状态码
return response.text
def parse_html(html):
soup = BeautifulSoup(html, 'lxml')
movie_list = soup.select('.hd') # 选择电影列表元素
for movie in movie_list:
title = movie.find('span', class_='title').text.strip()
rating = float(movie.find('span', class_='rating_num')['class'][0][:-1])
# 连接数据库
db_connect()
# 插入数据
insert_movie(title, rating)
def db_connect():
db = pymysql.connect(
host='localhost', # 数据库主机
user='your_username',
password='your_password',
database='douban_movies'
)
cursor = db.cursor()
return db, cursor
def insert_movie(title, rating):
sql = "INSERT INTO top250 (title, rating) VALUES (%s, %s)"
with db.cursor() as cursor:
cursor.execute(sql, (title, rating))
db.commit() # 提交事务
if __name__ == "__main__":
html = get_html(url)
parse_html(html)
db_close()
def db_close():
db.close()
```
3. **运行脚本并设置数据库连接信息**:
将上述代码中的数据库连接参数替换为你实际的MySQL服务器地址、用户名、密码和数据库名。
4. **执行爬虫**:
确保所有依赖已安装,运行脚本即可开始爬取并插入数据到数据库。
注意:频繁抓取可能会触发网站反爬策略,务必遵守相关规定并尊重网站服务条款。此外,如果豆瓣有反爬机制,可能需要处理验证码或使用代理IP。
阅读全文