使用selenium爬取猫眼电影榜单数据
前言
近年来,随着互联网的快速发展和人们对电影需求的增加,电影市场也变得日趋繁荣。作为观众或者投资者,我们时常需要了解最新的电影排行榜和票房情况。本文将介绍如何使用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").text
directors = item.find_element(By.CLASS_NAME, "star").text
scores = item.find_element(By.CLASS_NAME, "releasetime").text
data.loc[i] = [titles, directors, scores]
i += 1
print(f"电影名称:{titles},导演:{directors},评分:{scores}")
将DataFrame导出为Excel文件:
output_path = '猫眼.xlsx'
data.to_excel(output_path, index=False)
关闭浏览器:
driver.quit()
通过以上代码,我们成功实现了使用Python爬取猫眼电影榜单数据的功能。
完整代码
import time
from 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").text
directors = item.find_element(By.CLASS_NAME, "star").text
scores = item.find_element(By.CLASS_NAME, "releasetime").text
data.loc[i] = [titles, directors, scores]
i += 1
print(f"titles{titles}, directors{directors} , scores{scores}")
# # 将DataFrame导出为Excel文件
output_path = '猫眼.xlsx'
data.to_excel(output_path, index=False)
#
# # 关闭浏览器
driver.quit()
分点说明
import time:导入时间模块,用于添加延时等待。
from selenium import webdriver:导入Selenium库中的webdriver模块,用于创建浏览器实例和自动化操作。
from selenium.webdriver.common.by import By:导入Selenium库中的By模块,用于XPath定位元素。
import pandas as pd:导入pandas库,用于处理和分析数据。
driver_path = '':设置ChromeDriver的路径,填写你的ChromeDriver路径。
driver = webdriver.Chrome(driver_path):创建一个Chrome浏览器实例。
url = 'https://www.maoyan.com/board?timeStamp=1688716544141&sVersion=1&webdriver=false&index=3&signKey=44a722f975ab0b6750812bd0bf340b88&channelId=40011&requestCode=49793531118b4af79a95958d845ab0a7lgmud':目标网页的URL。
driver.get(url):打开目标网页。
time.sleep(5):等待5秒,确保页面加载完成。
info = driver.find_element(By.CLASS_NAME, "board-wrapper"):使用By.CLASS_NAME通过class名称定位电影信息所在的元素。
ddlist = info.find_elements(By.TAG_NAME, "dd"):使用By.TAG_NAME通过标签名称定位所有电影信息所在的元素。
data = pd.DataFrame(columns=['电影名称', '导演', '评分']):创建一个空的DataFrame,用于存储电影数据,并指定列名。
i = 0:设置索引变量i。
for item in ddlist::遍历所有电影信息。
titles = item.find_element(By.CLASS_NAME, "board-item-main").find_element(By.CLASS_NAME, "name").text:通过XPath定位电影名称,并使用.text获取文本内容。
directors = item.find_element(By.CLASS_NAME, "star").text:通过XPath定位导演信息,并使用.text获取文本内容。
scores = item.find_element(By.CLASS_NAME, "releasetime").text:通过XPath定位评分信息,并使用.text获取文本内容。
data.loc[i] = [titles, directors, scores]:将电影名称、导演和评分添加到DataFrame中的一行。
i += 1:索引自增1。
print(f"titles{titles}, directors{directors} , scores{scores}"):打印每部电影的名称、导演和评分。
output_path = '猫眼.xlsx':指定输出Excel文件的路径。
data.to_excel(output_path, index=False):将DataFrame保存为Excel文件,不包含索引列。
driver.quit():关闭浏览器。
完结
点赞加关注下个代码有帮助
————————————————
版权声明:本文为CSDN博主「全栈若城」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33681891/article/details/131602038
近年来,随着互联网的快速发展和人们对电影需求的增加,电影市场也变得日趋繁荣。作为观众或者投资者,我们时常需要了解最新的电影排行榜和票房情况。本文将介绍如何使用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").text
directors = item.find_element(By.CLASS_NAME, "star").text
scores = item.find_element(By.CLASS_NAME, "releasetime").text
data.loc[i] = [titles, directors, scores]
i += 1
print(f"电影名称:{titles},导演:{directors},评分:{scores}")
将DataFrame导出为Excel文件:
output_path = '猫眼.xlsx'
data.to_excel(output_path, index=False)
关闭浏览器:
driver.quit()
通过以上代码,我们成功实现了使用Python爬取猫眼电影榜单数据的功能。
完整代码
import time
from 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").text
directors = item.find_element(By.CLASS_NAME, "star").text
scores = item.find_element(By.CLASS_NAME, "releasetime").text
data.loc[i] = [titles, directors, scores]
i += 1
print(f"titles{titles}, directors{directors} , scores{scores}")
# # 将DataFrame导出为Excel文件
output_path = '猫眼.xlsx'
data.to_excel(output_path, index=False)
#
# # 关闭浏览器
driver.quit()
分点说明
import time:导入时间模块,用于添加延时等待。
from selenium import webdriver:导入Selenium库中的webdriver模块,用于创建浏览器实例和自动化操作。
from selenium.webdriver.common.by import By:导入Selenium库中的By模块,用于XPath定位元素。
import pandas as pd:导入pandas库,用于处理和分析数据。
driver_path = '':设置ChromeDriver的路径,填写你的ChromeDriver路径。
driver = webdriver.Chrome(driver_path):创建一个Chrome浏览器实例。
url = 'https://www.maoyan.com/board?timeStamp=1688716544141&sVersion=1&webdriver=false&index=3&signKey=44a722f975ab0b6750812bd0bf340b88&channelId=40011&requestCode=49793531118b4af79a95958d845ab0a7lgmud':目标网页的URL。
driver.get(url):打开目标网页。
time.sleep(5):等待5秒,确保页面加载完成。
info = driver.find_element(By.CLASS_NAME, "board-wrapper"):使用By.CLASS_NAME通过class名称定位电影信息所在的元素。
ddlist = info.find_elements(By.TAG_NAME, "dd"):使用By.TAG_NAME通过标签名称定位所有电影信息所在的元素。
data = pd.DataFrame(columns=['电影名称', '导演', '评分']):创建一个空的DataFrame,用于存储电影数据,并指定列名。
i = 0:设置索引变量i。
for item in ddlist::遍历所有电影信息。
titles = item.find_element(By.CLASS_NAME, "board-item-main").find_element(By.CLASS_NAME, "name").text:通过XPath定位电影名称,并使用.text获取文本内容。
directors = item.find_element(By.CLASS_NAME, "star").text:通过XPath定位导演信息,并使用.text获取文本内容。
scores = item.find_element(By.CLASS_NAME, "releasetime").text:通过XPath定位评分信息,并使用.text获取文本内容。
data.loc[i] = [titles, directors, scores]:将电影名称、导演和评分添加到DataFrame中的一行。
i += 1:索引自增1。
print(f"titles{titles}, directors{directors} , scores{scores}"):打印每部电影的名称、导演和评分。
output_path = '猫眼.xlsx':指定输出Excel文件的路径。
data.to_excel(output_path, index=False):将DataFrame保存为Excel文件,不包含索引列。
driver.quit():关闭浏览器。
完结
点赞加关注下个代码有帮助
————————————————
版权声明:本文为CSDN博主「全栈若城」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33681891/article/details/131602038
本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com