python+selenium100行代码爬取豆瓣top250存入excel文档中

最终成品:将豆瓣top250的排名、影名、评分、评分人数和影片链接保存到excel文档中

我的环境:python3.10+pycharm

  1. 第一步:在pycharm内通过控制台下载selenium工具。
    在这里插入图片描述
  2. 第二步:下载xlwt插件来创建和写excel文件,下载方式同上,指令改为:pip install xlwt
  3. 第三步:新建python项目,在项目中新建两个python file,分别命名main.py和movie.py
  4. 第四步:编写movie.py文件,代码如下:
class Movie:
    def __init__(self,rank,name,score,number,href):
        self.rank = rank
        self.name = name
        self.score = score
        self.number = number
        self.href = href

    def print(self):
        print(self.rank)
        print(self.name)
        print(self.score)
        print(self.number)
        print(self.href)
  1. 第五步:编写main.py,代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
from Movie import Movie
import xlwt

'''
初始化浏览器驱动
'''
def driverInit():
    driver = webdriver.Chrome()
    driver.get("https://movie.douban.com/top250")
    return driver

'''
初始化excel表格,并完成表格的第一行电影的相关信息
'''
def excelInit():
    global wb
    global writer
    wb = xlwt.Workbook()
    writer = wb.add_sheet("排名一 览")
    writer.write(0,0,"排名")
    writer.write(0,1,"名称")
    writer.write(0,2,"评分")
    writer.write(0,3,"评分人数")
    writer.write(0,4,"链接直达")

'''
将一部电影信息写入excel表格中
'''
def writeMovie(movie):
    writer.write(movie.rank, 0, movie.rank)
    writer.write(movie.rank, 1, movie.name)
    writer.write(movie.rank, 2, movie.score)
    writer.write(movie.rank, 3, movie.number)
    writer.write(movie.rank, 4, movie.href)

'''
通过浏览器驱动获取电影信息,并且返回一个电影对象
'''
def getMovie(index,pageIndex):
    indexStr = str(index)
    name = driver.find_element(By.XPATH, "//*[@id='content']/div/div[1]/ol/li["+indexStr+"]/div/div[2]/div[1]/a/span[1]").text
    score = driver.find_element(By.XPATH, "//*[@id='content']/div/div[1]/ol/li["+indexStr+"]/div/div[2]/div[2]/div/span[2]").text
    number = driver.find_element(By.XPATH, "//*[@id='content']/div/div[1]/ol/li["+indexStr+"]/div/div[2]/div[2]/div/span[4]").text
    href = driver.find_element(By.XPATH, "//*[@id='content']/div/div[1]/ol/li["+indexStr+"]/div/div[1]/a").get_attribute("href")
    return Movie((pageIndex-1)*25+index,name,score,number[:-3],href)

'''
通过浏览器驱动控制前往豆瓣top250的下一位
'''
def nextPage():
    driver.find_element(By.LINK_TEXT,"后页>").click()

'''
获取豆瓣top250
'''
def getTop250():
    totalPageNumber = 10  # 一共多少页
    pageItemNumber = 25  # 每页多少条信息

    for pageIndex in range(1, totalPageNumber + 1):
        for index in range(1, pageItemNumber + 1):
            getMovie(index, pageIndex)
            movie = getMovie(index, pageIndex)
            movie.print()
            writeMovie(movie)
        if pageIndex != totalPageNumber:
            nextPage()

'''
主函数
'''
if __name__ == '__main__':
    driver = driverInit()
    excelInit()
    getTop250()
    wb.save("top250.xls")
  1. 第六步:运行main.py即可,过程中会不断打印信息,如果没有打印,则检查是否出错了,最后等待爬取完成,项目目录下会出现一个名为“top250.xls”的excel文档。
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值