豆瓣电影TOP250 ① 导入模块 ② 定义url和请求头参数 ③ requests发送html请求,获取html字符串 ④ 实例化BeautifulSoup对象(中介) ⑤ 获取数据 ⑥ 存储数据
时间: 2024-10-18 08:23:13 浏览: 45
豆瓣电影Top250的数据抓取通常会涉及以下几个步骤:
1. **导入模块**:首先,需要导入所需的Python库,如`requests`用于发送HTTP请求,以及`BeautifulSoup`或`lxml`等库来解析HTML文档。
```python
import requests
from bs4 import BeautifulSoup
```
2. **定义URL和请求头**:通常情况下,你需要指定豆瓣电影Top250的网页地址,以及可能的用户代理(User-Agent),以防被网站识别为机器人。例如:
```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. **发送HTML请求并获取内容**:使用`requests.get()`函数发送GET请求,并将响应的HTML存储在一个变量中。
```python
response = requests.get(url, headers=headers)
html_content = response.text
```
4. **实例化BeautifulSoup对象**:创建一个BeautifulSoup对象,传入HTML字符串和解析器(如'lxml')。
```python
soup = BeautifulSoup(html_content, 'lxml')
```
5. **提取数据**:使用BeautifulSoup提供的方法(如`.find_all()`、`.select()`等)找到包含所需信息的元素,并通过它们的属性(比如`class`、`id`)提取数据。这通常是电影名称、评分等信息。
6. **存储数据**:最后,你可以选择将数据存储到列表、字典、CSV文件,甚至数据库中,具体取决于你的需求。
```python
data_list = []
for item in soup.find_all('div', class_='hd'):
title = item.h3.a.text
rating = item.strong.span['class'][0].replace('rating_num', '')
data_list.append({'title': title, 'rating': rating})
# 写入CSV 或者 JSON 文件,具体看需求
with open('douban_movies.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['标题', '评分'])
writer.writerows(data_list)
```
阅读全文