使用selenium爬取猫眼电影榜单数据

news/2025/1/7 22:41:11/

文章目录

  • 前言
  • 导入所需的库:
  • 设置ChromeDriver的路径,并创建一个Chrome浏览器实例:
  • 打开目标网页,这里以猫眼电影榜单页面为例:
  • 使用XPath定位电影信息。通过查看网页源代码,发现电影信息所在的`<dd>`标签具有唯一的class属性名:
  • 遍历所有的`<dd>`标签,获取电影名称、导演和评分,并将数据保存到DataFrame中:
  • 将DataFrame导出为Excel文件:
  • 关闭浏览器:
  • 完整代码
    • 分点说明
  • 完结

前言

在这里插入图片描述

近年来,随着互联网的快速发展和人们对电影需求的增加,电影市场也变得日趋繁荣。作为观众或者投资者,我们时常需要了解最新的电影排行榜和票房情况。本文将介绍如何使用Python编写一个爬虫脚本,通过Selenium库自动化操作浏览器,爬取猫眼电影榜单数据,并保存为Excel文件。

导入所需的库:

在这里插入图片描述

  • import time:导入时间模块,用于添加延时等待。
  • from selenium import webdriver:导入Selenium库中的webdriver模块,用于创建浏览器实例和自动化操作。
  • from selenium.webdriver.common.by import By:导入Selenium库中的By模块,用于XPath定位元素。
  • import pandas as pd:导入pandas库,用于处理和分析数据。

设置ChromeDriver的路径,并创建一个Chrome浏览器实例:

在这里插入图片描述

driver_path = 'ChromeDriver的路径'
driver = webdriver.Chrome(driver_path)

打开目标网页,这里以猫眼电影榜单页面为例:

在这里插入图片描述

url = 'https://www.maoyan.com/board?timeStamp=1688716544141&sVersion=1&webdriver=false&index=3&signKey=44a722f975ab0b6750812bd0bf340b88&channelId=40011&requestCode=49793531118b4af79a95958d845ab0a7lgmud'
driver.get(url)
time.sleep(5)

使用XPath定位电影信息。通过查看网页源代码,发现电影信息所在的<dd>标签具有唯一的class属性名:

在这里插入图片描述

info = driver.find_element(By.CLASS_NAME, "board-wrapper")
ddlist = info.find_elements(By.TAG_NAME, "dd")

遍历所有的<dd>标签,获取电影名称、导演和评分,并将数据保存到DataFrame中:

data = pd.DataFrame(columns=['电影名称', '导演', '评分'])
i = 0
for item in ddlist:titles = item.find_element(By.CLASS_NAME, "board-item-main").find_element(By.CLASS_NAME, "name").textdirectors = item.find_element(By.CLASS_NAME, "star").textscores = item.find_element(By.CLASS_NAME, "releasetime").textdata.loc[i] = [titles, directors, scores]i += 1print(f"电影名称:{titles},导演:{directors},评分:{scores}")

将DataFrame导出为Excel文件:

output_path = '猫眼.xlsx'
data.to_excel(output_path, index=False)

关闭浏览器:

driver.quit()

通过以上代码,我们成功实现了使用Python爬取猫眼电影榜单数据的功能。

完整代码

在这里插入图片描述

import timefrom selenium import webdriver
from selenium.webdriver.common.by import By
import pandas as pd# 设置ChromeDriver的路径
driver_path = ''# 创建Chrome浏览器实例
driver = webdriver.Chrome(driver_path)# 打开目标网页
url = 'https://www.maoyan.com/board?timeStamp=1688716544141&sVersion=1&webdriver=false&index=3&signKey=44a722f975ab0b6750812bd0bf340b88&channelId=40011&requestCode=49793531118b4af79a95958d845ab0a7lgmud'
driver.get(url)
time.sleep(5)
# 使用XPath定位电影信息
info = driver.find_element(By.CLASS_NAME, "board-wrapper")
ddlist = info.find_elements(By.TAG_NAME, "dd")
# print(ddlist)
data = pd.DataFrame(columns=['电影名称', '导演', '评分'])
i = 0
for item in ddlist:# print(item)# 获取所有电影信息titles = item.find_element(By.CLASS_NAME, "board-item-main").find_element(By.CLASS_NAME, "name").textdirectors = item.find_element(By.CLASS_NAME, "star").textscores = item.find_element(By.CLASS_NAME, "releasetime").textdata.loc[i] = [titles, directors, scores]i += 1print(f"titles{titles}, directors{directors} , scores{scores}")# # 将DataFrame导出为Excel文件
output_path = '猫眼.xlsx'
data.to_excel(output_path, index=False)
#
# # 关闭浏览器
driver.quit()

分点说明

  1. import time:导入时间模块,用于添加延时等待。

  2. from selenium import webdriver:导入Selenium库中的webdriver模块,用于创建浏览器实例和自动化操作。

  3. from selenium.webdriver.common.by import By:导入Selenium库中的By模块,用于XPath定位元素。

  4. import pandas as pd:导入pandas库,用于处理和分析数据。

  5. driver_path = '':设置ChromeDriver的路径,填写你的ChromeDriver路径。

  6. driver = webdriver.Chrome(driver_path):创建一个Chrome浏览器实例。

  7. url = 'https://www.maoyan.com/board?timeStamp=1688716544141&sVersion=1&webdriver=false&index=3&signKey=44a722f975ab0b6750812bd0bf340b88&channelId=40011&requestCode=49793531118b4af79a95958d845ab0a7lgmud':目标网页的URL。

  8. driver.get(url):打开目标网页。

  9. time.sleep(5):等待5秒,确保页面加载完成。

  10. info = driver.find_element(By.CLASS_NAME, "board-wrapper"):使用By.CLASS_NAME通过class名称定位电影信息所在的元素。

  11. ddlist = info.find_elements(By.TAG_NAME, "dd"):使用By.TAG_NAME通过标签名称定位所有电影信息所在的元素。

  12. data = pd.DataFrame(columns=['电影名称', '导演', '评分']):创建一个空的DataFrame,用于存储电影数据,并指定列名。

  13. i = 0:设置索引变量i。

  14. for item in ddlist::遍历所有电影信息。

  15. titles = item.find_element(By.CLASS_NAME, "board-item-main").find_element(By.CLASS_NAME, "name").text:通过XPath定位电影名称,并使用.text获取文本内容。

  16. directors = item.find_element(By.CLASS_NAME, "star").text:通过XPath定位导演信息,并使用.text获取文本内容。

  17. scores = item.find_element(By.CLASS_NAME, "releasetime").text:通过XPath定位评分信息,并使用.text获取文本内容。

  18. data.loc[i] = [titles, directors, scores]:将电影名称、导演和评分添加到DataFrame中的一行。

  19. i += 1:索引自增1。

  20. print(f"titles{titles}, directors{directors} , scores{scores}"):打印每部电影的名称、导演和评分。

  21. output_path = '猫眼.xlsx':指定输出Excel文件的路径。

  22. data.to_excel(output_path, index=False):将DataFrame保存为Excel文件,不包含索引列。

  23. driver.quit():关闭浏览器。

完结

点赞加关注下个代码有帮助
在这里插入图片描述


http://www.ppmy.cn/news/774208.html

相关文章

uni-app 使用@escookrequest-miniprogram请求发送

前言 在使用uni-app开发小程序时候发现axios添加请求头时在实际网络请求时并没有添加进去 后面发现是有第三方包escookrequest-miniprogram代替axios发送请求的&#xff0c;请求头也添加正常。 注意是这个包也是在外层包了一层data&#xff0c;但好像并不能统一处理掉。 代…

IDEA alt+ins快捷键失效问题解决方法

解决方法 将这几个插件勾勾去掉&#xff0c;然后apply&#xff0c;此时会提示重启IDEA&#xff0c;重启过后即可使用了

Git Bash中的复制与粘贴

Git Bash中的复制与粘贴 Ctrlins 复制 &#xff08;ins 键盘右上角的Insert&#xff09;Shiftins 粘贴 &#xff08;shift 键盘上最左下角CTRL键的上面一个上档转换键&#xff0c;也可用于中英文转换&#xff09;

键盘里Insert作用

键盘里Insert的存在 据说呀&#xff0c;以前的屏幕会消耗四分之一的内存&#xff0c;不小心的一次插入就可能会导致系统崩溃&#xff0c;所以才会有Insert的出现&#xff0c;可以在一个屏幕里修改内容。 也就是说&#xff0c;Insert的作用就是便于修改 现在依然存在着&#…

在webstorm中不知道碰到了什么键,光标变成宽黑形状怎么恢复?

答&#xff1a;应该是ins键。再按下就好了。 台式机键盘上这个键位于方向键的上方的del键的上方。 也有叫做insert&#xff0c;或者中文键盘直接叫“插入”的&#xff0c;仔细找找。 在笔记本中&#xff0c;这个按钮就是insert&#xff0c;也就是右边键盘中的数字块&#xff0…

键盘上的INS键---切换文档编写中光标的状态

作用&#xff1a;"覆盖" 你在打字的时候如果是插入的&#xff0c;那么会覆盖掉紧挨着的那个字 问题&#xff1a;在Vs2010或Word编写文档时&#xff0c;有时候不小心光标会变成较宽的黑长方形那种状态 现象&#xff1a;按空格会删除后面的内容&#xff0c;如果是插入文…

Win11粘滞键怎么取消?

粘滞键指的是电脑使用中的一种快捷键&#xff0c;专为同时按下两个或多个键有困难的人而设计的&#xff0c;方便Shift等键的组合使用。但是有用户觉得自己不需要使用粘滞键&#xff0c;就想关闭这个功能&#xff0c;下面小编就教教大家如何取消粘滞键的方法。 Validation OS下…