selenium爬取豆瓣

#coding:utf-8
#__author__='wang'


import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

url = 'https://movie.douban.com/'

#获取电影详情地址以及电影的名称
def get_datail_url_and_movie_name(movie_count):
    #定位“选电影”
    driver_info.get(url)
    WebDriverWait(driver_info,15).until
(lambda driver_info:driver_info.find_elements_by_css_selector
('.nav-items a')[1]).click()
    #定位"豆瓣高分"
    WebDriverWait(driver_info,10).until
(lambda driver_info:driver_info.find_elements_by_css_selector
('.tag-list label')[4]).click()

    #需要根据电影总数量来计算需要点击几次‘加载更多’,
    #open_more变量用与记录点击次数
    if movie_count == 20:
        pass

    else:
        open_more = movie_count/20 - 1

        #定位加载更多
        for x in xrange(1,open_more+1):
            WebDriverWait(driver_info, 10).until
(lambda driver_info: driver_info.find_element_by_css_selector
('.more')).click()
            #提取电影名称
            title_list = driver_info.find_elements_by_css_selector
('.list a')
            for a in title_list:
                print u'电影地址:'+a.get_attribute('href')
                print u'电影名称:' + a.text
                #根据电影详情URL下载热门评论
                get_detail_info(a.get_attribute('href'))

def get_detail_info(url):
    driver_detail.get(url)
    div = WebDriverWait(driver_detail,10).until
(lambda driver_detail:driver_detail.find_element_by_css_selector
('#hot-comments'))
    comments_list = div.find_elements_by_class_name('comment-item')
    #获取前5条热门评论
    for comment in comments_list[:5]:
        #在comment这个对象的基础上继续定位p标签
        p = comment.find_element_by_tag_name('p').text
        print u'热门评论:'+p







if __name__ == '__main__':
    #创建连个PhantomJS浏览器对象,一个用于解析列表页,一个用于解析详情页的
热门评论
    driver_info = webdriver.PhantomJS()
    driver_detail = webdriver.PhantomJS()
    #输入需要下载的数量
    number = input('请输入下载总数:')
    get_datail_url_and_movie_name(number)

你可能感兴趣的:(selenium爬取豆瓣)