内容

访问豆瓣电影Top250(https://movie.douban.com/top250?start=0)
获取每部电影的中文片名、排名、评分及其对应的链接,按照“排名-中文片名-评分-链接”的格式显示在屏幕上。

代码编程

导入库

1
2
from bs4 import BeautifulSoup as BS
import requests

初始化变量和设置

1
2
3
4
5
rank = 0
fs = open("豆瓣.txt", 'w', encoding='utf-8')
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
}
  • rank:初始化一个变量rank,用来记录电影的排名。
  • fs:打开(或创建)一个名为“豆瓣.txt”的文件,用于写入数据,文件编码设置为utf-8。
  • headers:设置HTTP请求头,模拟浏览器访问,User-Agent是浏览器标识,有助于避免被网站识别为爬虫。

爬取豆瓣电影Top 250

1
2
3
for page in range(0, 251, 25):
soup = BS(requests.get(f"https://movie.douban.com/top250?start={page}&filter=", headers=headers).content.decode("utf-8"), "lxml")
content = soup.select('#content > div > div.article > ol > li > div > div.info')
  • for循环:遍历豆瓣电影Top 250的页面,每页25部电影,共10页(0到250,步长为25)。
  • requests.get:发送GET请求到豆瓣电影Top 250的URL,start={page}参数用于指定页面的起始索引。
  • BS:创建一个BeautifulSoup对象来解析请求返回的HTML内容,使用lxml作为解析器。
  • select:使用CSS选择器找到包含电影信息的HTML元素。

提取和打印电影信息

1
2
3
4
5
6
for i in content:
rank = rank + 1
name = i.select('.title')
star = i.select('.rating_num')
url = i.find('a')['href']
print("排名:" + str(rank) + "-《" + name[0].text + "》-评分:" + star[0].text + "-链接:" + url)
  • 内层for循环:遍历每页中的电影信息。
  • rank = rank + 1:更新电影的排名。
  • name:使用CSS选择器提取电影名称。
  • star:提取电影的评分。
  • url:找到电影链接的href属性。
  • print:打印电影的排名、名称、评分和链接。

结果展示