详解使用Selenium爬取豆瓣电影前100的爱情片相关信息

时间:2021-05-23

什么是Selenium

Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。

1.准备工作

由于Selenium的环境配置过程比较繁琐,我会尽可能详细的对其进行讲解。

1.1 安装Selenium

由于Selenium的环境配置过程比较繁琐,我会多花一些篇幅对其进行讲解。可以在cmd命令框输入以下内容安装Selenium库。

pip install Selenium

1.2 浏览器驱动安装

Selenium的使用必须有相应浏览器的webdriver,以Chrome浏览器为例,可以在这个链接查看自己的浏览器对应的Chromedriver的版本。

1.3 环境变量添加

设置浏览器的地址非常简单。 我们可以手动创建一个存放浏览器驱动的目录, , 将下载的浏览器驱动文件丢到该目录下。然后在我的电脑–>属性–>系统设置–>高级–>环境变量–>系统变量–>Path,将该目录添加到Path的值中。如果配置变量有问题,可以参照这个链接

注意,如果系统报错为:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created:This version of ChromeDriver only supports Chrome version***

表示当前下载的Chromedriver的版本与自己浏览器的版本无法对应,可以通过Chrome的帮助查看自己的浏览器版本

1.4 小试牛刀

接下来就可以测试我们的selenium是不是可以正常使用了,以一个简单的例子开始:驱动浏览器打开百度。

from selenium import webdriverurl='https:///typerank?type_name=爱情片&type=13&interval_id=100:90&action='options=webdriver.ChromeOptions()options.add_argument('lang=zh_CN.UTF-8')options.add_argument('user-agent="Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"')browser=webdriver.Chrome()browser.get(url)wait=WebDriverWait(browser,10)def get_page(): browser.implicitly_wait(10) for i in range(50): time.sleep(0.3) browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')#下滑操作 print('正在下滑第{}次'.format(i)) print('-------------') #time.sleep(10) print("*****请等待几秒*****") time.sleep(10) when=wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'#content > div > div.article > div.movie-list-panel.pictext > div:nth-child(380) > div > a > img')))#----------------------------------------------------------------- movies=browser.find_elements_by_class_name('movie-name-text') names=[] for item in movies: if item.text!='': names.append(item.text) print("爬取成功") print(len(names))#--------------------------------------------------------------- playables=browser.find_elements_by_class_name('playable-sign') playable_sign=[] for sign in playables: if sign.text!='': playable_sign.append(sign.text) print('爬取成功') print(len(playable_sign))#------------------------------------------------------------ rank_names=browser.find_elements_by_class_name('rank-num') ranks=[] for rank in rank_names: if rank.text!='': ranks.append(rank.text) print('爬取成功') print(len(ranks))#--------------------------------------------------------- actors=browser.find_elements_by_class_name('movie-crew') actor_list=[] for actor in actors: if actor.text!='': actor_list.append(actor.text) print('爬取成功') print(len(actor_list))#---------------------------------------------------------- clasic=browser.find_elements_by_class_name('movie-misc') miscs=[] for misc in clasic: if misc.text!='': miscs.append(misc.text) print('爬取成功') print(len(miscs))#----------------------------------------------------------- rates=browser.find_elements_by_class_name('movie-rating') rate=[] for score in rates: if score.text!='': rate.append(score.text) print('爬取成功') print(len(rate))#----------------------------------------------------------- ''' links=browser.find_elements_by_class_name('movie-content') for link in links: link_img=link.get_attribute('data-original') print(link_img) ''' return rate,miscs,actor_list,ranks,playable_sign,namesif __name__ == "__main__": rate,miscs,actor_list,ranks,playable_sign,names=get_page() datas=pd.DataFrame({'names':names,'rank':ranks,'分类':miscs,'评分':rate}) try: datas.to_csv('机器学习\爬虫\douban_0327.csv',encoding='utf_8_sig') print("保存成功") print(datas) except: print('保存失败')

到此这篇关于详解使用Selenium爬取豆瓣电影前100的爱情片相关信息的文章就介绍到这了,更多相关Selenium爬取豆瓣电影内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章