前言
由于我是python爬虫的初学者,所以我从selenium自动化模块开始学起,一些selenium模块安装和游览器驱动安装环境搭配的事情我就不说了。我是基于Chrome游览器的自动化处理,一些安装教程请网上自己搜索!
首先我先将一下我的大致思路:
我是建立了一个类 属性种类和种类网址
from selenium import webdriver
import time
def gethref():
url = "https://movie.douban.com/chart"
wd = webdriver.Chrome(r'E:\chromedriver.exe')#加载游览器驱动
wd.implicitly_wait(10)#等待游览器加载页面
wd.get(url)
element = wd.find_elements_by_css_selector('div[class="types"] > span >a')#使用css选择器
class hrefname:#建立一个类属性是种类和种类网址
def __init__(self,href,name):
self.href=href
self.name=name
arr=[]#装种类的容器
for item in element:#遍历获取的元素,把种类信息记录起来
hrefnames=hrefname(str(item.get_attribute("href")),item.text)
arr.append(hrefnames)
wd.quit()#爬完31个网址之后关闭游览器
# for href in arr:
# print(href)
return arr#返回容器类型hrefname数组
功能是获取一个网址中滑杆向下划4次的所有电影信息
from selenium import webdriver
import time
import douban
def backcontent(arr,hrefs):
url =hrefs.href
wd = webdriver.Chrome(r'E:\chromedriver.exe')
wd.implicitly_wait(10)
wd.get(url)
for index in range(4): # 下拉滚动条
target = wd.find_element_by_css_selector("#footer")#抓取id=footer的元素
wd.execute_script("arguments[0].scrollIntoView();", target) # 调用js命令拖动到可见的元素去
time.sleep(1)#每次操作睡眠一秒
Movies = wd.find_elements_by_css_selector('div[class="movie-list-panel pictext"] >div') # 获取电影信息页面元素
class movie:#建立一个Movie类
def __init__(self, name, timeandtype, grade, people, rank,type):
self.name = name
self.timeandtype = timeandtype
self.grade = grade
self.people = people
self.rank = rank
self.type=type
def message(self):#打印信息
print("电影名称=[%s] 电影播放时间和类型=[%s] 评分=[%s] 人数=[%s] 电影排名=[%s] 种类=[%s]" % (
self.name, self.timeandtype, self.grade, self.people, self.rank,self.type))
for item in Movies:#根据标签获取单个元素
name = item.find_element_by_css_selector(".movie-name-text").text#获取电影名
timeandtype = item.find_element_by_css_selector(".movie-misc").text#获取电影时间和类型
grade = item.find_element_by_css_selector(".rating_num").text#获取电影评分
people = item.find_element_by_css_selector(".comment-num").text#获取电影评论人数
rank = item.find_element_by_css_selector(".rank-num").text#获取电影排名
m = movie(name=name, timeandtype=timeandtype, grade=grade, people=people, rank=rank,type=hrefs.name)
arr.append(m)#把东西装入容器里面
m.message()#输出信息
wd.quit() # 关闭游览器
return arr#把容器返回
# backcontent("https://movie.douban.com/typerank?type_name=%E5%89%A7%E6%83%85&type=11&interval_id=100:90&action=")
还要将结果写入excel里,需要导入xlwt模块
import douban
import item
import time
import xlwt
arr=douban.gethref()#是hrefname类型数组
content=[]#用来装Movies对象的容器
for hrefs in arr:
# print(href)
content=item.backcontent(content,hrefs)#反复将容器传入方法装Movies对象
time.sleep(1)
#接下来写入excel文件
workbook=xlwt.Workbook(encoding="utf-8")#创建excel文件
worksheet=workbook.add_sheet("movies")#创建一张表
title=["电影名称","放映时间和类型","评分","观看人数","排行","种类"]#第一行数据
for index in range(len(title)):#先把第一行写完
worksheet.write(0,index,title[index])#行,列,内容
for index in range(len(content)):#把剩下的内容遍历写入,注意第一行已经被写,所以数据因该放到第二行上面
worksheet.write((index + 1), 0, content[index].name)
worksheet.write((index + 1), 1, content[index].timeandtype)
worksheet.write((index + 1), 2, content[index].grade)
worksheet.write((index + 1), 3, content[index].people)
worksheet.write((index + 1), 4, content[index].rank)
worksheet.write((index + 1), 5, content[index].type)
workbook.save("e:/DouBanMoviesAll.xls")#最后保存一下数据
最后内容pycharm显示内容
excel显示内容
如果大家觉得喜欢的化可以点个关注哟!顺便可以关注一波我的个人独立博客