学生课表数据

  1. >>> url = 'http://jwc104.ncu.edu.cn:8081/jsxsd/xskb/xskb_list.do'
  2. >>> headers = {'Cookie':'JSESSIONID=51F956A11025525F9B508034EC78FE6D'}
  3. >>> import requests
  4. >>> aaa = requests.get(url,headers=headers).text

获取数据的关键就是识别验证码获取cookie 以及从一堆很…难看的HTML中解析出我们需要的课表数据。

验证码识别

先抓取一些验证码下来研究:
image.pngimage.pngimage.png
image.png
image.png
经过观察,只有这样几个可能出现的字母or数字

  1. may_nums = ['b', 'c', 'm', 'n', 'v', 'x', 'z', '1', '2', '3']

重叠问题:一旦出现m则会重叠,而m出现的概率是40%
m对后面一个数图像的影响:

  1. [[255 255 255 255 255 255 255 255]
  2. [255 255 255 255 255 255 255 255]
  3. [255 255 255 255 255 255 255 255]
  4. [ 0 0 0 255 255 255 255 255]
  5. [ 0 0 0 0 255 255 255 255]
  6. [255 255 0 0 255 255 255 255]
  7. [255 255 0 0 255 255 255 255]
  8. [255 255 0 0 255 255 255 255]
  9. [255 255 0 0 255 255 255 255]
  10. [255 255 0 0 255 255 255 255]
  11. [255 255 0 0 255 255 255 255]
  12. [255 255 0 0 255 255 255 255]]

不受影响事所有数组:

  1. # b
  2. [[ 0 0 0 255 255 255 255 255]
  3. [ 0 0 0 255 255 255 255 255]
  4. [ 0 0 0 255 255 255 255 255]
  5. [ 0 0 0 255 0 0 0 255]
  6. [ 0 0 0 0 0 0 0 0]
  7. [ 0 0 0 0 255 0 0 0]
  8. [ 0 0 0 255 255 255 0 0]
  9. [ 0 0 0 255 255 255 0 0]
  10. [ 0 0 0 255 255 255 0 0]
  11. [ 0 0 0 0 255 0 0 0]
  12. [ 0 0 0 0 0 0 0 0]
  13. [ 0 0 0 255 0 0 0 255]]
  14. # c
  15. [[255 255 255 255 255 255 255 255]
  16. [255 255 255 255 255 255 255 255]
  17. [255 255 255 255 255 255 255 255]
  18. [255 255 0 0 0 0 0 255]
  19. [255 0 0 0 0 0 0 255]
  20. [ 0 0 0 255 255 255 255 255]
  21. [ 0 0 255 255 255 255 255 255]
  22. [ 0 0 255 255 255 255 255 255]
  23. [ 0 0 255 255 255 255 255 255]
  24. [ 0 0 0 255 255 255 255 255]
  25. [255 0 0 0 0 0 0 255]
  26. [255 255 0 0 0 0 0 255]]
  27. # m
  28. [[255 255 255 255 255 255 255 255]
  29. [255 255 255 255 255 255 255 255]
  30. [255 255 255 255 255 255 255 255]
  31. [ 0 0 255 0 0 0 0 255]
  32. [ 0 0 0 0 0 0 0 0]
  33. [ 0 0 0 255 255 255 0 0]
  34. [ 0 0 255 255 255 255 0 0]
  35. [ 0 0 255 255 255 255 0 0]
  36. [ 0 0 255 255 255 255 0 0]
  37. [ 0 0 255 255 255 255 0 0]
  38. [ 0 0 255 255 255 255 0 0]
  39. [ 0 0 255 255 255 255 0 0]]
  40. # n
  41. [[255 255 255 255 255 255 255 255]
  42. [255 255 255 255 255 255 255 255]
  43. [255 255 255 255 255 255 255 255]
  44. [ 0 0 255 255 0 0 0 0]
  45. [ 0 0 255 0 0 0 0 0]
  46. [ 0 0 0 0 255 255 255 0]
  47. [ 0 0 0 255 255 255 255 0]
  48. [ 0 0 255 255 255 255 255 0]
  49. [ 0 0 255 255 255 255 255 0]
  50. [ 0 0 255 255 255 255 255 0]
  51. [ 0 0 255 255 255 255 255 0]
  52. [ 0 0 255 255 255 255 255 0]]
  53. # v
  54. [[255 255 255 255 255 255 255 255]
  55. [255 255 255 255 255 255 255 255]
  56. [255 255 255 255 255 255 255 255]
  57. [ 0 0 255 255 255 255 0 0]
  58. [ 0 0 0 255 255 255 0 0]
  59. [ 0 0 0 255 255 255 0 0]
  60. [255 0 0 255 255 0 0 0]
  61. [255 0 0 0 255 0 0 255]
  62. [255 0 0 0 0 0 0 255]
  63. [255 255 0 0 0 0 0 255]
  64. [255 255 0 0 0 0 255 255]
  65. [255 255 0 0 0 0 255 255]]
  66. # x
  67. [[255 255 255 255 255 255 255 255]
  68. [255 255 255 255 255 255 255 255]
  69. [255 255 255 255 255 255 255 255]
  70. [ 0 0 0 255 255 255 0 0]
  71. [ 0 0 0 255 255 0 0 0]
  72. [255 0 0 0 0 0 0 255]
  73. [255 255 0 0 0 0 255 255]
  74. [255 255 0 0 0 0 255 255]
  75. [255 255 0 0 0 0 0 255]
  76. [255 0 0 0 0 0 0 255]
  77. [ 0 0 0 255 255 0 0 0]
  78. [ 0 0 0 255 255 255 0 0]]
  79. # z
  80. [[255 255 255 255 255 255 255 255]
  81. [255 255 255 255 255 255 255 255]
  82. [255 255 255 255 255 255 255 255]
  83. [ 0 0 0 0 0 0 0 0]
  84. [ 0 0 0 0 0 0 0 0]
  85. [255 255 255 255 0 0 0 0]
  86. [255 255 255 0 0 0 0 255]
  87. [255 255 0 0 0 0 255 255]
  88. [255 0 0 0 0 255 255 255]
  89. [ 0 0 0 0 255 255 255 255]
  90. [ 0 0 0 0 0 0 0 0]
  91. [ 0 0 0 0 0 0 0 0]]
  92. # 1 有2种
  93. [[255 0 0 0 0 0 0 255]
  94. [255 0 0 0 0 0 0 255]
  95. [255 0 255 255 0 0 0 255]
  96. [255 255 255 255 0 0 0 255]
  97. [255 255 255 255 0 0 0 255]
  98. [255 255 255 255 0 0 0 255]
  99. [255 255 255 255 0 0 0 255]
  100. [255 255 255 255 0 0 0 255]
  101. [255 255 255 255 0 0 0 255]
  102. [255 255 255 255 0 0 0 255]
  103. [255 0 0 0 0 0 0 0]
  104. [255 0 0 0 0 0 0 0]]
  105. [[255 255 255 255 0 0 255 255]
  106. [255 255 0 0 0 0 255 255]
  107. [255 255 0 0 0 0 255 255]
  108. [255 255 255 255 0 0 255 255]
  109. [255 255 255 255 0 0 255 255]
  110. [255 255 255 255 0 0 255 255]
  111. [255 255 255 255 0 0 255 255]
  112. [255 255 255 255 0 0 255 255]
  113. [255 255 255 255 0 0 255 255]
  114. [255 255 255 255 0 0 255 255]
  115. [255 255 0 0 0 0 0 0]
  116. [255 255 0 0 0 0 0 0]]
  117. # 2
  118. [[255 0 0 0 0 0 255 255]
  119. [ 0 0 0 0 0 0 0 255]
  120. [ 0 255 255 255 0 0 0 0]
  121. [255 255 255 255 255 0 0 0]
  122. [255 255 255 255 255 0 0 0]
  123. [255 255 255 255 0 0 0 0]
  124. [255 255 255 255 0 0 0 255]
  125. [255 255 255 0 0 0 255 255]
  126. [255 0 0 0 0 255 255 255]
  127. [ 0 0 0 0 255 255 255 255]
  128. [ 0 0 0 0 0 0 0 0]
  129. [ 0 0 0 0 0 0 0 0]]
  130. # 3
  131. [[255 0 0 0 0 0 0 255]
  132. [255 0 0 0 0 0 0 0]
  133. [255 255 255 255 255 255 0 0]
  134. [255 255 255 255 255 255 0 0]
  135. [255 255 255 255 255 255 0 0]
  136. [255 255 0 0 0 0 0 255]
  137. [255 255 0 0 0 0 0 0]
  138. [255 255 255 255 255 0 0 0]
  139. [255 255 255 255 255 255 0 0]
  140. [ 0 255 255 255 255 0 0 0]
  141. [ 0 0 0 0 0 0 0 0]
  142. [255 0 0 0 0 0 0 255]]