from selenium import webdriver
import time
#设置无头模式
options = webdriver.ChromeOptions()
optins.add_argument('--headless')
browser = webdriver.Chrome(options=options) #打开chrome
browser.get('http://maoyan.com/board/4') #进入主页,会等待页面加载完
#获取一个页面的电影信息
def get_one_page()
#通过xpath表达式获取电影信息节点对象列表
dd_list = browser.find_elements_by_xpath('/html/body/div[4]/div/div/div[1]/dl/dd') #xpath表达式直接通过在电影节点信息处右键查看元素 -- 点到包含该页所有电影子节点(dd)的大节点(dl)右键复制 --xpath表达式获取,再在最后添加/dd定位到所有的电影节点
#创建容器用于存放抓下来的数据
item = {}
for dd in dd_list:
#print(dd.text) 打印一下查看以上步骤是否成功,并查看数据格式:抓到了序号、电影名称,主演、上映时间等信息,每个信息间都有\n换行
#获取电影信息,并将获取的信息放到容器中
item_list = dd.text.split('\n')
item['number'] = item_list[0]
item['name'] = item_list[1]
item['star'] = item_list[2]
item['time'] = item_list[3]
item['score'] = item_list[4]
print(item)
while True:
get_one_page()
try:
#通过selenium点击下一页标签进入下一页准备再次循环抓取数据
#find_element_by_link_text()通过文本内容查找超链接,然后使用click()点击进入下一页
browser.find_element_by_link_text('下一页').click()
#给页面元素加载预留时间,因为click()不像get()一样会等,当网速不好等情况,页面还没加载完,click()就会出发进入下一页,这样就抓取不全
time.sleep(0.5)
#当循环抓取到下一页,找不到‘下一页’这个节点,会抛异常,所以需要捕捉掉
except Exception as e:
print('抓取结束!')
browser.quit()
break
python爬虫 使用selenium抓取 猫眼电影网站排名页 电影信息
最新推荐文章于 2024-01-19 22:32:41 发布