python爬虫 使用selenium抓取 猫眼电影网站排名页 电影信息

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

你可能感兴趣的:(spider,#python)