Python 爬虫学习笔记 – 第二周/单元6/中国大学排名定向爬虫

English Version:  https://today2tmr.com/en/2017/07/16/python-spider-study-note-week-twounit-sixdirectional-spider-for-ranking-of-chinese-universities

http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html

  • 功能描述
    • 输入:大学排名URL链接
    • 输出:大学排名信息的屏幕输出(排名,大学名称,总分)
    • 技术路线:requets-bs4
    • 定向:仅爬取输入的URL,不扩展
  • 可行性确定
    • 确认信息存储在HTML页面中(部分信息由JS动态生成)
    • 查看robots.txt,无爬虫限制
  • 设计程序结构
    1. 获取网页内容。getHTMLText()
    2. 提取信息放入合适的数据结构。二维数据,嵌套列表。fillUnivList()
    3. 利用数据结构展示并输出信息。printUnivList()

主函数

 

爬取信息

 

提取信息存入列表

  • 观察源代码

     
  • 所有信息被封装在tbody标签中
  • 每个大学信息被封装在tr标签中
  • 每个tr中的信息被封装在td标签中
  • 用遍历查找方法,需过滤非标签类型的其他信息如字符串

 

格式化输出大学列表

  • .format()
  • 字符串中{}表示槽,其顺序对应format()中的参数顺序
  • 可用编号0,1,2,3..对应变量

     

优化

中文对齐问题

format()规则:

: <填充> <对齐> <宽度> , <精度> <类型>
引导符号 用于填充的单个字符,数字即表示编号 <左对齐, >右对齐, ^居中对齐 槽的设定输出宽度 数字的千分位分隔符适用于整数和浮点数 浮点数小数部分的精度或字符串的最大输出长度 整数类型: b,c,d,o,x,X; 浮点数类型: e,E,f,%
  • 中文字符宽度不够时,填充的是西文字符,中西文字符占位不同
  • 用中文字符空格填充 chr(12288)

     

全代码

 

总结

  • requests + bs4
  • 中英文混排输出

Leave a Reply

Your email address will not be published.