内容
访问豆瓣电影Top250(https://movie.douban.com/top250?start=0)
获取每部电影的中文片名、排名、评分及其对应的链接,按照“排名-中文片名-评分-链接”的格式显示在屏幕上。
代码编程
导入库
1 2 from bs4 import BeautifulSoup as BSimport 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:打印电影的排名、名称、评分和链接。
结果展示