selenium自动化方式爬取豆瓣热门电影
爬取的代码如下:
from selenium import webdriver from bs4 import BeautifulSoup import time #发送请求,获取响应 def get_PageItem(): # 准备url url='https://movie.douban.com/chart' #创建一个浏览器对象 driver=webdriver.Chrome() #发送请求 driver.get(url) #print(driver.page_source) page_code=BeautifulSoup(driver.page_source,"lxml") #print(page_code) #获取所有的inden类下面的所有table标签 items=page_code.select('.indent table') return items def start(): """启动程序""" #获取当前时间 start_time=time.time() #接收table标签 items=get_PageItem() print("用时:",time.time()-start_time,"秒") for item in items: #查找电影标题 找到P12的div里面的a标签 name1=item.select("div.pl2 a")[0].text #也可以写成:name=item.select(".p12 a")[0].text name2=name1.replace(" ","").replace("\n","") #获取演员列表,上映时间和电影类型 time_person=item.select(".pl")[0].text #获取评价人数 num=item.select("span.pl")[0].text #获取评分 score=item.select("span.rating_nums")[0].text get_star(score) with open("a.txt",'a',encoding = 'utf-8')as f:#使用with open在使用完成后会直接进行关闭,而直接使用open在使用完成后需要进行关闭,否则会占用内存 f.write("%s\n%s\n%s\n%s\n"% ("电影名称:%s"%name2, "演员列表:%s"%time_person, "评分和人数%s%s%s"%(get_star(score),score,num), "*"*200)) #根据评分显示星星数量 def get_star(score): #打印出score的数据类型,在python中只有相同的数据类型才能进行乘法和除法操作。 #print(type(score))#打印出来,score是str类型,str类型是不能进行乘法和除法的操作 str1='' for i in range(0,5): # # 把score进行强转,转成float类型 if int(float(score)/2 )>i: str1+="★" else: str1 += "☆" return str1 start()
执行代码后,在a.txt文档中存放爬取的内容如下: