Selenium案例练习
1.爬取猫眼电影数据
页面需求
使用selenium爬取猫眼Top100中,电影每部电影的排名,电影名,主演,上映时间及评分。
页面分析
通过分析页面结构,选择合适的接入点。selenium直接进行页面检查就可以,不用再分析代码是否在源码中出现。
光标位于第一个电影处,点击右键,检查,定位到第一个电影的信息,我们可以把标签折叠,可以看到dd标签里存放了一个电影的所有数据,所有的dd标签里存放了本页面所有的电影,而dd标签都存放于dl标签内。那我们只需要找到dl标签,再从里面找到dd标签就可以获取到电影数据。
滑动网页,可以看到第一页共有十个电影,在代码中刚好由10个dd标签。
总结,通过分析,一个dd标签对应一部影片,所有的dd标签存放于dl标签中,我们需要先找到class="board-wrapper"的dl标签,然后在dl标签下面找到dd标签,最后在dd标签中解析数据。
举例:函数有多个返回值,只取其中需要的返回值的方法
import csv
def test():
return [{
't': 2, 'm': '3'}],['t','m']
a, b = test()
a, _ = test()
_, b = test()
with open('a.c.csv', 'a',encoding='utf-8',newline="") as f:
w = csv.DictWriter(f,b)
w.writeheader()
w.writerows(a)
print(a) [{
't': 2, 'm': '3'}]
print(b) ['t', 'm']
代码实现
from selenium import webdriver
import csv
import time
driver = webdriver.Edge()
driver.get('https://maoyan.com/board/4?offset=0')
time.sleep(1)
# 找到dl标签
# driver.find_element_by_xpath('//*[@id="app"]/div/div/div[1]/dl')
# 找到dl标签下所有的dd标签,因为获取的不是一个,所有用elements
# 解析一页的函数
def get_data():
dd_tags = driver.find_elements_by_xpath(