【Python爬虫】批量爬取豆瓣电影排行Top250

发布时间 2023-09-22 14:01:51作者: RS迷途小书童

        今天给大家分享下我刚开始接触Python时学习的爬虫程序,代码部分很简单,不过当时刚开始学习时还是走了不少弯路的。这个爬虫程序应该是很多书里面的入门练手程序,主要就是去豆瓣爬取电影评分排行前250。

        本篇文章只做学习交流使用,不涉及任何商业用途。如果有侵权请联系作者删除。大家在使用Python爬取信息时,请遵守该网站的相关守则和法律规定!!!

一、导入所需的库

import requests
import time
from bs4 import BeautifulSoup
# 导入requests,BeautifulSoup模块

二、完整代码

        由于代码过于简单,我这里就不分步去讲解了。如果大家对Python爬虫有兴趣可以自己去找一下资料或视频去学习。

# -*- coding: utf-8 -*-
"""
@Time : 2023/4/12 17:03
@Auth : RS迷途小书童
@File :短信轰炸.py
@IDE :PyCharm
"""
import requests
import time
from bs4 import BeautifulSoup
# 导入requests,BeautifulSoup模块
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0',
           'Host': 'movie.douban.com'}  # window10,火狐点击F12中的网络性能获取
print("\n")
for i in range(0, 10):
    # 爬取前10页电影列表
    url = 'https://movie.douban.com/top250?start='+str(i*25)
    # 实现翻页功能
    request = requests.get(url, headers=headers, timeout=10)  # timeout实现网页未返回值的情况
    soup = BeautifulSoup(request.text, "html.parser")  # 转换成BeautifulSoup类型
    title_lists = soup.find_all("div", class_="hd")  # 一页电影所有名字的代码(find_all输出的是列表)
    # print(title_lists)
    # div,class为标题的网页代码
    print('正在获取第%s页......' % (i+1))
    print("\n")
    for x in range(0, 25):  # 解析一页电影的名字,一页中有25个电影。(或者使用for title in range(len(title_list)))
        time.sleep(1)
        title_list = title_lists[x].a.text  # 解析find_all的列表数据,a表示标签<a>中的文字输出
        print("第%s部电影名字是:%s\n" % (x+1, title_list))
    print("第%s页已获取成功......\n\n" % (i+1))
    time.sleep(2)

三、总结

        一般在我们需要爬取网页时,第一件事就是去找到自己需要的信息对应网站的哪个标签以及网页的请求方式。然后就是爬虫的固定格式,请求头、解析啥的。上面的代码其实就很简单,不同的页码只是网址的最后发生了变化,所以套个循环就能用,而且我们需要的信息也只要通过F12就能直接查到。但有些网页可能会复杂一点,不能直接找到我们需要的信息或者需要验证什么的。这个大家就需要深入去学习一下爬虫的知识了,如反爬机制、多线程等。我平时用爬虫比较少,所以就不说太多了,以免误人子弟。