import requests from bs4 import BeautifulSoup url = 'https://movie.douban.com/chart' 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'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') for movie in soup.select('.pl2'): name = movie.a.text.strip() url = movie.a['href'] print(f'{name}:{url}')
时间: 2024-04-21 11:27:47 浏览: 12
这段代码的功能是爬取豆瓣电影排行榜的电影名称和链接,并将其打印出来。具体实现步骤是:
1. 导入requests和BeautifulSoup库。
2. 设置请求头headers,模拟浏览器发送请求。
3. 发送GET请求获取豆瓣电影排行榜页面的HTML源码,并使用BeautifulSoup库进行解析。
4. 使用CSS选择器(.pl2)获取所有电影的HTML元素,遍历元素列表。
5. 对于每个元素,使用CSS选择器获取电影名称和链接,并将其打印出来。
需要注意的是,此代码仅供学习和参考,不应用于商业用途或非法用途。爬取网站数据时应注意遵守相关法律法规和网站的使用规定。
相关问题
目标网站:https://movie.douban.com/; 从该网站中找到电影排名的链接; 仔细分析排名网站页面发生变更时的信息; 列出详细分析页面的步骤; 编写代码,模仿浏览器人为操作,获取电影的电影名、导演和演员、评分、排名及图片; 数据存储到films.csv或名为films的记事本中或名为films的数据库中,存储以下内容:电影名、导演和演员、评分、排名; 将电影图片获取后存储到films_pic文件夹中; 对存储数据进行检查处理,实现以电影名评价数及评分生成折线图的可视化操作。
好的,我来帮你分析页面步骤并提供代码实现:
1. 从目标网站中找到电影排名链接,发现排名页面为 https://movie.douban.com/chart 。
2. 对排名页面进行分析,可以发现电影信息都在class为“pl2”的div标签中,其中电影名在a标签中,导演和演员信息在p标签中,评分在span标签中,排名在em标签中。
3. 编写代码,模拟浏览器人为操作,获取电影的电影名、导演和演员、评分、排名及图片,并将数据存储到csv文件中以及将电影图片存储到指定文件夹中。
```python
import requests
from bs4 import BeautifulSoup
import urllib.request
import os
import pandas as pd
# 请求排名页面
url = 'https://movie.douban.com/chart'
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'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 获取电影信息
movies_list = []
movies = soup.select('.pl2')
for movie in movies:
# 获取电影名
title = movie.select('a')[0].get_text().strip()
# 获取导演和演员信息
bd = movie.select('p')[0].get_text().strip()
# 获取评分
rating = movie.select('.rating_nums')[0].get_text().strip()
# 获取排名
rank = movie.select('.pl')[0].get_text().strip().replace('#', '')
# 获取电影图片链接
pic_url = movie.select('img')[0]['src']
# 下载电影图片
pic_name = title + '.jpg'
folder = 'films_pic'
if not os.path.exists(folder):
os.mkdir(folder)
try:
urllib.request.urlretrieve(pic_url, os.path.join(folder, pic_name))
except urllib.error.HTTPError:
continue
# 存储电影信息
movie_info = [title, bd, rating, rank]
movies_list.append(movie_info)
# 存储数据到csv文件中
df = pd.DataFrame(movies_list, columns=['电影名', '导演和演员', '评分', '排名'])
df.to_csv('films.csv', index=False, encoding='utf_8_sig')
```
4. 对存储数据进行检查处理,实现以电影名评价数及评分生成折线图的可视化操作。
```python
import matplotlib.pyplot as plt
# 读取csv文件中的数据
df = pd.read_csv('films.csv')
# 对电影名评价数及评分进行可视化
fig, ax = plt.subplots()
ax.plot(df['电影名'], df['评分'], label='评分')
ax.plot(df['电影名'], df['评价人数'], label='评价人数')
ax.legend()
plt.xticks(rotation=90)
plt.show()
```
这样,就实现了从目标网站获取电影排名信息,并将数据存储到csv文件中以及将电影图片存储到指定文件夹中,并且实现了可视化操作。
python 爬取,通过requests爬取豆瓣排行榜的电影名称数据
可以使用requests和BeautifulSoup库来实现这个功能。以下是一个示例代码:
```python
import requests
from bs4 import BeautifulSoup
url = "https://movie.douban.com/chart"
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"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
movies = soup.select(".pl2 a")
for movie in movies:
print(movie.text.strip())
```
首先,我们定义一个URL变量,指向豆瓣电影排行榜页面。然后,我们使用requests发送GET请求,获取页面的HTML内容。接下来,我们使用BeautifulSoup解析HTML内容,从中提取出电影名称。最后,我们使用for循环遍历所有电影,并打印出名称。