# 用于获取网页源码的函数

def getHTMLText(url):try:

# 使用requests库爬取网页源码2

r= req.get(url, headers={'user-agent': 'Mozilla/5.0'})

# 判断是否爬取过程中出现错误

r.raise_for_status()

# 设置源码的编码格式

r.encoding=r.apparent_encodingreturnr.text

except:return "爬取失败"# 拼接地址,返回爬取地址数组

def urlSplit(path, sheet):

array=[]for i in sheet["href"]:

url= path+i

array.append(url)returnarray

# 获取指定url页面中电视剧列表集合

def TvList(html):

# 外部传来的全局数组

Tvlist=[]

#使用BeautifulSoup类解析html文本

soup= BeautifulSoup(html, "html.parser")

#获取每个电视剧的a链接数组

As= soup.select("ul.fed-list-info > li >a.fed-list-title")

#从a标签中获取电视剧id,name,hreffor a inAs:

# 获取href

href= a.attrs["href"]

# 获取电视剧id

id= href.split('/')[-2]

# 获取Tv name

name=a.text

tem=[id,name,href]

Tvlist.append(tem)returnTvlist

# 获取电视剧详情页数据集合

def TvDetailList(html, TvDetaillist):

# 解析网页源码

soup= BeautifulSoup(html, "html.parser")

# 电视剧名称

title= soup.h1.a.string# 电视剧地址

href= "https://www.bt5156.com"+soup.h1.a.attrs['href']

# 临时数组

temp=[]for index, value in enumerate(soup.find_all('li', 'fed-part-eone')):if(index > 5):breaktemp.append(value.text)

# 主演

actor= temp[0].split(":")[1]

# 导演

director= temp[1].split(":")[1]

# 地区

sort= temp[2].split(":")[1]

# 地址

location= temp[3].split(":")[1]

# 年份

year= temp[4].split(":")[1]

# 最新修改时间

date= temp[5].split(":")[1]

# 判断可能会出现错误的地方,将错误跳过try:

# 集数

number= soup.find_all('span', 'fed-list-remarks')[0].text

number= re.findall('\d+', number)[0]

except:

number= ''# 不论number数据是否错误,都执行以下代码finally:

# 评分

score= soup.find_all('span', 'fed-list-score')[0].text

# 简介

description= soup.find_all('div', 'fed-part-esan')[0].text

# 对数据进行组装,一个temp就是一个电视剧详细信息

temp=[title, href, actor, director, sort,location, year, date, number, score, description]

# 将电视剧信息存入集合

TvDetaillist.append(temp)

print(title)

# 将数据保存到excel文件中

def saveExcel(writer,sheet,df):

# 将数据写入excel表中

df.to_excel(writer, sheet_name=sheet)

def saveTvListToExcel(urls, pages, TvlistPath):

writer=pd.ExcelWriter(TvlistPath)

# 爬取网站前n页电视剧列表,分别存储在不同的工作簿中for index, url inenumerate(urls):

print(url+" "+pages[index])

# 网页源码

html=getHTMLText(url)

# 返回电视剧列表

Tvlist=TvList(html)

# 将列表转为pandas中的DataFrame

df= pd.DataFrame(Tvlist, columns=['id', 'name', 'href'])

# 将DataFrame写入excel中,数据持久化

saveExcel(writer, pages[index], df)

# 从内存中写入excel

writer.save()

def saveTvDetailListToExcel(path,pages, TvlistPath, TvDetaillistPath):

col= ["title", "href", "actor", "director", "sort", "location","year", "date", "number", "score", "description"]

writer=pd.ExcelWriter(TvDetaillistPath)for page inpages:

TVDetaillist=[]

sheet= pd.read_excel(TvlistPath, sheet_name=page)for url inurlSplit(path, sheet):

# 循环地址,爬取电视剧详情页

html=getHTMLText(url)try:

TvDetailList(html, TVDetaillist)

except:

# 发生错误立即将数据保存至excel中并停止爬取

df= pd.DataFrame(TVDetaillist, columns=col)

saveExcel(writer, page, df)

writer.save()

print("有一条数据爬取错误")return 0df= pd.DataFrame(TVDetaillist, columns=col)

saveExcel(writer, page, df)

writer.save()

# 爬取的页数

def SpiderPageNum(n, urls, pages):for i in range(1, n+1):

url= "https://www.bt5156.com/vodshow/lianxuju--------" +\

str(i)+ "---/"urls.append(url)

page= "page" +str(i)

pages.append(page)

高等数学与python高级应用_python高级应用程序与设计相关推荐

  1. python画球鞋_基于Python爬虫原理的篮球鞋选择程序的设计与实现

    基于 Python 爬虫原理的篮球鞋选择程序的设计与实现 张世元 [期刊名称] <通讯世界> [年 ( 卷 ), 期] 2019(026)002 [摘要] 伴随着篮球鞋工艺的进步及产业升级 ...

  2. python高级应用_Python高级编程技巧

    Python 高级编程技巧 本文展示一些高级的 Python 设计结构和它们的使用方法.在日常工作中,你可以根据需要 选择合适的数据结构, 例如对快速查找性的要求. 对数据一致性的要求或是对索引的要求 ...

  3. python的数据模型_python高级(一)—— python数据模型(特殊方法)

    本文主要内容 collections.namedtuple __getitem__ 和 __len__ __repr__和__str__ __abs__.__add__和__mul__ __bool_ ...

  4. python切片迭代_Python高级特性 切片 迭代解析

    切片:方便截取list.tuple.字符串部分索引的内容 正序切片 语法:dlist = doList[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3.即索引0,1,2,正好是3个元素 ...

  5. 我对python的理解_python高级函数以及我对python的理解

    常见的高级函数:lambda.map.reduce.filter.list comprehension lambda 匿名函数,限制一个表达式 m = lambda x,y:x+y # 5 m(2,3 ...

  6. python高级教程_Python高级进阶教程

    这个系列的教程是在刘金玉编程的<零基础python教程>基础上的高级进阶应用. 教程列表: Python高级进阶教程001期 pycharm+anaconda3+pyqt5可视化界面开发环 ...

  7. python高级特性_Python高级特性

    参考原文 开篇:高级特性是用来简化我们常用操作的特性,合理利用高级特性可以使代码更简洁.明了. 切片 取list或tuple中的指定索引范围的操作,用循环十分繁琐,因此Python提供了切片(Slic ...

  8. python generator输出_python 高级特性:Generator(生成器)

    格式对比: List Imprehensions 格式:[ 语句 for .. in ..] Generator 格式:(语句 for .. in ..) 区别:List存储的是具体内容,每个元素都占 ...

  9. python if高级用法_Python高级用法总结--元类

    type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义,而是运行时动态创建的. 比方说我们要定义一个 Hello 的 class ,就写一个hello.py 模块: class ...

最新文章

  1. 《zabbix用户权限分配管理》-8
  2. 总市值3862亿的创始人们在各阶段是怎么选女友的?
  3. shell实例第14讲:字符串截取的8种方法
  4. Flask Web开发入门
  5. ps -aux 和ps -elf 区别(查看进程)
  6. flume采集最简demo
  7. pytorch指定用多张显卡训练_Pytorch多GPU训练
  8. SLAM中有关占据栅格地图的的表示方法和利用激光传感器构建占据栅格地图的方法
  9. c语言logo,真好玩 C语言输出Yahoo动态logo
  10. javaIo流实际应用
  11. java绘制图形代码_ImagePy_Learn | 图形学绘制代码学习:core\draw\polygonfill.py
  12. JS三大经典变量命名法
  13. JS 字符串全部替换 ,replace (/ /g,'')
  14. linux puppy 安装软件,小芭比linux下载
  15. android用bmob实现评论,Bmob在Android上的应用
  16. Java实习生常规技术面试题每日十题Java基础(六)
  17. 设置CPU频率和CPU运行核心数
  18. Placement service – placement安装(wallaby-allinone)
  19. table的样式设置
  20. 传奇Newoupui-pak配置失败怎么处理?

热门文章

  1. SAP Spartacus自定义Component的Not found问题
  2. Text store debug FM CRM_TEXT_MAINTAIN_OW
  3. Hybris commerce里用web service为什么查询不到产品的描述信息
  4. Angular multiple binding debug
  5. 异步加载SAP UI5 OData metadata
  6. my task doorway - where is it parsed
  7. CloudFoundry环境上的三种端口,您分清楚了吗
  8. nodejs部署神器pm2的使用体验
  9. How is data replicted from HANA to AS
  10. how to find all element type with type table of content