赞
踩
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。