python爬取豆瓣电影
时间: 2023-09-14 11:11:27 浏览: 48
以下是一个简单的Python爬取豆瓣电影的例子:
```python
import requests
from bs4 import BeautifulSoup
# 设置请求头
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'}
# 请求页面
url = 'https://movie.douban.com/top250'
response = requests.get(url, headers=headers)
# 解析页面
soup = BeautifulSoup(response.text, 'html.parser')
movies = soup.find_all('div', class_='hd')
for movie in movies:
title = movie.a.span.text.strip()
print(title)
```
这个例子首先通过requests库发送GET请求来获取豆瓣电影Top250列表页面的HTML代码。然后使用BeautifulSoup库解析HTML代码,找到页面中每个电影的标题,最后打印出来。请注意,为了避免被豆瓣网站屏蔽,我们在请求中设置了一个浏览器的User-Agent头。
相关问题
用python爬取豆瓣电影
好的,以下是利用 Python 爬取豆瓣电影的基本步骤:
1. 安装相关库
我们需要使用 requests 库来发送 HTTP 请求,以及使用 BeautifulSoup 库来解析 HTML 页面。你可以使用以下命令安装这两个库:
```python
pip install requests beautifulsoup4
```
2. 发送 HTTP 请求
我们可以使用 requests 库中的 get 方法来向豆瓣电影的网站发送 HTTP 请求,并获得响应:
```python
import requests
url = 'https://movie.douban.com/top250'
response = requests.get(url)
```
3. 解析 HTML 页面
我们可以使用 BeautifulSoup 库将响应的 HTML 页面解析成 BeautifulSoup 对象:
```python
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
```
4. 提取电影数据
在 BeautifulSoup 对象中,我们可以使用 find 或 find_all 方法来查找特定的 HTML 标签和属性。通过查看豆瓣电影 Top250 页面的 HTML 结构,我们可以发现每个电影都包含在一个 class 为 "item" 的 div 标签中,而每个电影的名称和评分则分别包含在 class 为 "title" 和 "rating_num" 的 span 标签中。因此,我们可以使用以下代码来提取电影名称和评分:
```python
movies = soup.find_all('div', class_='item')
for movie in movies:
title = movie.find('span', class_='title').text.strip()
rating = movie.find('span', class_='rating_num').text.strip()
print(title, rating)
```
以上就是利用 Python 爬取豆瓣电影的基本步骤。当然,还可以根据需要提取更多的电影数据,例如导演、演员、上映时间等。
python爬取豆瓣电影短评
要使用Python爬取豆瓣电影短评,可以按照以下步骤进行:
1. 导入必要的库,包括requests、BeautifulSoup和pandas。
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
```
2. 定义一个函数,用于获取指定电影的短评。该函数需要传入电影的URL和要获取的页数。
```python
def get_comments(url, pages):
comments = []
for i in range(pages):
# 构造URL
url_page = url + 'comments?start=' + str(i * 20) + '&limit=20&status=P&sort=new_score'
# 发送请求
response = requests.get(url_page)
# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 获取评论
items = soup.find_all('div', class_='comment-item')
for item in items:
comment = item.find('span', class_='short').text.strip()
comments.append(comment)
return comments
```
3. 调用该函数获取指定电影的短评,并将结果保存到CSV文件中。
```python
# 电影《肖申克的救赎》的URL
url = 'https://movie.douban.com/subject/1292052/'
# 获取短评
comments = get_comments(url, 5)
# 将结果保存到CSV文件中
df = pd.DataFrame({'comments': comments})
df.to_csv('comments.csv', index=False)
```