python爬取大学排名,python成绩排名 排序

  python爬取大学排名,python成绩排名 排序

  导入追溯

  从硒导入网驱动程序

  由导入者

  来自硒。常见进口例外

  导入时间

  导入xlsxwriter

  导入操作系统

  上海班级排名:

  __SHANGHAIRANKING_ROOT= ./跳跃

  indicator_list=[]

  更多指示符计数=0

  def __init__(self):

  自我. driver=webdriver .铬合金()

  def __initIndicatorList(self):

  self.indicator_list.clear()

  屁股=自己.司机。find _ element _ by _ XPath(//*[@ id= content-box ]/div[2]/table/the ad/tr/th[6]/div/div[1]/div[1]/input )

  自我.司机。execute _ script( arguments[0]).单击();,对接)

  菜单=自己.司机。find _ element _ by _ XPath(//*[@ id= content-box ]/div[2]/table/the ad/tr/th[6]/div/div[1]/div[2]/ul )\。find _ elements _ by _ CSS _ selector(" Li ")

  对于菜单中的男:

  自我。指标_列表。追加(m . text)

  self.more_indicator_cnt=len(菜单)

  #初始化工作簿

  def __initWorkBook(自身,年份):

  如果不是os.path.exists(自身.__SHANGHAIRANKING_ROOT):

  os.mkdir(self .__SHANGHAIRANKING_ROOT)

  如果os.path.exists(自身.__SHANGHAIRANKING_ROOT):

  打印([信息]:文件创建成功)

  否则:

  打印([错误]:文件创建失败)

  出口(1)

  self.workBook=xlsxwriter .工作簿(f"{ self ._ _上海排名_ ROOT }/shranking _ { year } .xlsx’)

  打印([信息]:工作簿已初始化.)

  def __closeWorkBook(self):

  self.workBook.close()

  打印([信息]:工作簿已关闭.)

  #初始表

  def __initSheet(self):

  如果self.workBook==0或而不是isinstance(self.workBook,xlsxwriter .工作簿):

  打印([错误]:首先初始化工作簿)

  self.close()

  出口(1)

  自我。工作表=自身。工作簿。add _ worksheet()

  #在表头上签名

  self.sheet.write(0,0,排名)

  self.sheet.write(0,1,学校名称)

  self.sheet.write(0,2,英文名称)

  self.sheet.write(0,3,标签)

  self.sheet.write(0,4,省市)

  self.sheet.write(0,5,类型)

  self.sheet.write(0,6,’总分)

  对于范围内的我(len(self。指标_列表)):

  self.sheet.write(0,7 i,self.indicator_list[i])

  打印([信息]:工作表已初始化.)

  定义记录(自身,年份):

  偏移=1

  URL=f https://www。上海排名。cn/rankings/bcur/{ year } 11

  自我. driver.get(网址)

  时间。睡眠(2)

  自我__initIndicatorList()

  自我. initWorkBook(年)

  自我__initSheet()

  虽然正确:

  表=自己.司机。find _ element _ by _ XPath(//*[@ id= content-box ]/div[2]/table/tbody )

  TRS=桌子。按标签名查找元素( tr )

  曲线=偏移

  对于拓尔思中的tr:

  TDS=tr。按标签名查找元素( TD )

  self.sheet.write(curline,0,tds[0]).正文)

  self.sheet.write(curline,1,tds[1]).find _ element _ by _ class _ name( name-cn ).正文)

  self.sheet.write(curline,2,tds[1]).find _ element _ by _ class _ name( name-en ).正文)

  尝试:

  tags=tds[1].按类名查找元素(标签)

  self.sheet.write(curline,3,tags.text)

  除了例外NoSuchElementException:

  self.sheet.write(curline,3,)

  self.sheet.write(curline,4,tds[2]).正文)

  self.sheet.write(curline,5,tds[3]).正文)

  self.sheet.write(curline,6,tds[4]).正文)

  曲线=曲线一

  对于范围内的索引(self.more_indicator_cnt):

  曲线=偏移

  屁股=自己.司机。find _ element _ by _ XPath(//*[@ id= content-box ]/div[2]/table/the ad/tr/th[6]/div/div[1]/div[1]/input )

  自我.司机。execute _ script( arguments[0]).单击();,对接)

  菜单=自己.司机。find _ element _ by _ XPath(//*[@ id= content-box ]/div[2]/table/the ad/tr/th[6]/div/div[1]/div[2]/ul )\。find _ elements _ by _ CSS _ selector(" Li ")

  自我.司机。execute _ script( arguments[0]).单击();,菜单[索引])

  时间。睡眠(0.5)

  对于拓尔思中的tr:

  self.sheet.write(curline,7 index,tr。find _ elements _ by _ tag _ name( TD )[-1]).正文)

  曲线=曲线一

  偏移=曲线

  尝试:

  自我.司机。find _ element _ by _ class _ name(自动分页-禁用。自动分页-下一页’)

  打印([处理]: {}完成.。格式(偏移量- 1))

  打印(f [信息]:上海{年份}排名完毕.)

  自我__closeWorkBook()

  返回

  除了例外NoSuchElementException:

  nextButt=self ._ driver。find _ element _ by _ class _ name( ant-pagination-next )

  自我.司机。execute _ script( arguments[0]).单击();,nextButt)

  打印([处理]: {}完成.。格式(偏移量- 1))

  时间。睡眠(0.5)

  除了基本异常作为e:

  自我__closeWorkBook()

  提高(五)

  定义关闭(自己):

  自我. driver.close()

  if __name__==__main__ :

  shr=ShangHaiRanking()

  尝试:

  #爬取2015年-2022年所有数据

  对于在幅度内的我(2015年年、2023年):

  shr .录制(一)

  除了基本异常作为e:

  打印([错误]:崩溃,细节被吹)

  print(traceback.format_exc(),end= )

  最后:

  shr.close()结果如下:

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: