写爬虫代码使其爬取豆瓣电影网站
时间: 2024-12-26 19:30:28 浏览: 10
写一个爬取豆瓣电影网站的简单爬虫,首先需要准备以下几个步骤:
1. **导入必要的库**:
Python 的 `requests` 库用于发送HTTP请求,`BeautifulSoup` 或 `lxml` 可以帮助解析HTML文档。
```python
import requests
from bs4 import BeautifulSoup
```
2. **设置URL和headers**:
豆瓣电影首页的URL通常可能是 "https://movie.douban.com/",需要添加headers来模拟浏览器环境,防止被识别为爬虫。
```python
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'}
```
3. **发送GET请求**:
发起请求,获取网页源码。
```python
response = requests.get(url, headers=headers)
```
4. **解析HTML**:
使用 BeautifulSoup 解析HTML,找到包含电影信息的部分,比如电影标题、导演、主演、评分等。
```python
soup = BeautifulSoup(response.text, 'html.parser')
movies = soup.find_all('div', class_='hd') # 假设电影信息在class为"hd"的div中
```
5. **提取和存储数据**:
遍历每个电影元素,提取需要的数据,并将其存储到列表、字典或其他数据结构中,之后可以将数据保存到文件或数据库。
```python
data = []
for movie in movies:
title = movie.find('span', class_='title').text
director = movie.find('span', class_='導演').text if movie.find('span', class_='導演') else ''
rating = movie.find('span', class_='rating_num')['score']
data.append({
'title': title,
'director': director,
'rating': rating
})
```
6. **保存数据**:
将数据保存成csv、json或直接存入数据库。
```python
import csv
with open('douban_movies.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['Title', 'Director', 'Rating'])
writer.writerows(data)
```
这只是一个基础示例,实际操作中可能还需要处理更多复杂的情况,例如分页、跳转、登录验证和反爬虫策略等。记得遵守网站的robots.txt协议和使用条款,尊重版权。
阅读全文