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文档中存放爬取的内容如下:

猜你喜欢

转载自www.cnblogs.com/benpao1314/p/11268540.html