首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动化班次时间表优化爬虫?

自动化班次时间表优化爬虫?
EN

Stack Overflow用户
提问于 2009-01-07 09:24:20
回答 3查看 577关注 0票数 0

总体计划

获取我的课程信息以自动优化并选择我的uni课程时间表。

整体算法

  1. 使用其企业登录引擎登录到网站
  2. 找到我的本学期及其相关科目(预置)
  3. 导航到正确的页面,并从每一个相关的主题(讲座,实践和研讨会时间)获得数据。
  4. 剥夺无用信息的数据
  5. 等级比较接近的等级越高,随机日的等级越低。
  6. 解决最佳时刻表方案
  7. 给我一个最好的案例信息的详细列表。
  8. 输出一个可能的类信息的详细列表(例如,有些信息可能是完整的)
  9. 让程序自动选择最好的类。
  10. 继续检查,看看我们是否能达到7。

6详细列出所有的课程,以讲座为重点,将排名最高(每门学科只有一个),并试着围绕这类课程进行安排。

问题

有人能给我提供一些类似于用python编写的东西的链接吗?关于6.:您会推荐什么样的数据结构来存储这些信息?单人马的每一个对象的链接列表?我是否应该将所有信息写入文本文件?

我正在考虑建立独角兽,类似于以下属性:

  • 主题
  • 排名
  • 时间
  • 类型
  • 教师

我对Python几乎没有经验,并认为这将是一个很好的学习项目,试图完成。感谢为帮助我入门而提供的任何帮助和链接,开放给编辑进行适当的标记或任何必要的(不确定这属于编程和python之外的其他方面吗?)

编辑:无法得到我想要的适当格式,所以发布><

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-01-07 10:29:08

根据您对#6的计划,以及数据集的大小,它可能并不简单;对我来说,这无疑是NP硬全局优化的味道.

不过,如果您谈论的是几十个节点(而不是数百个节点),那么一个相当愚蠢的算法应该能够提供足够好的性能。

因此,您有两个限制:

  1. 按分数对类进行的总体排序;这是灵活的。
  2. 阶级冲突;这是不灵活的。

我所说的“灵活”的意思是,你可以去更间隔的班级(分数较低),但你不能同时上两个班。有趣的是,得分和冲突之间可能存在正相关关系;得分较高的班级更容易发生冲突。

我第一次通过一种算法:

代码语言:javascript
运行
复制
selected_classes = []
classes = sorted(classes, key=lambda c: c.score)
for clas in classes:
    if not clas.clashes_with(selected_classes):
        selected_classes.append(clas)

如果课程长度不均衡,从奇怪的时间开始,那么解决冲突可能会很尴尬。将开始时间和结束时间映射为“时间块”的简化表示(每15分钟/ 30分钟或任何您需要的时间),可以更容易地查找不同类的开始和结束之间的重叠。

票数 2
EN

Stack Overflow用户

发布于 2009-01-07 09:39:56

BeautifulSoup在这里被提到过几次,例如在python中获取xml属性值列表

美丽的Soup是一个Python /XML解析器,专为屏幕抓取之类的快速周转项目而设计。有三个特性使其强大:

  1. 漂亮的汤不会窒息,如果你给它不好的标记。它生成一个解析树,它与原始文档大致相同。这通常足以收集您需要的数据,然后逃跑。
  2. 美丽的Soup提供了一些简单的方法和Pythonic成语,用于导航、搜索和修改解析树:用于剖析文档和提取所需内容的工具包。您不必为每个应用程序创建一个自定义解析器。
  3. 漂亮的Soup自动将传入的文档转换为Unicode,将传出的文档转换为UTF-8。您不必考虑编码,除非文档没有指定编码,而且Beautiful无法自动检测编码。然后,您只需指定原始编码。

美汤会解析你给它的任何东西,并为你做遍历树的事情。您可以告诉它“查找所有链接”,或者“查找externalLink类的所有链接”,或者“查找urls与"foo.com”匹配的所有链接,或者“查找具有粗体文本的表标题,然后给我该文本”。“

曾经被锁在设计不善的网站上的有价值的数据现在就在你的手中。花上几个小时完成的项目,只需几分钟就可以得到美汤。

票数 0
EN

Stack Overflow用户

发布于 2009-01-07 12:09:58

这里的问题太多了。

请将其分解为主题区域,并就每个主题提出具体问题。请把注意力集中在其中一个,并提出具体问题。请定义你的术语:“最佳”并不意味着没有一些具体的衡量优化。

这是我在你的主题列表中看到的。

  1. 抓取HTML 1使用其企业登录引擎登录到网站 2找出我的本学期及其相关科目(预习) 导航到正确的页面,并从每一个相关的主题(讲座,实践和研讨会的时间)获得数据。 4对无用信息的数据进行处理。
  2. 有些算法基于“更接近彼此”来“排序”,以寻找“最佳时间”。由于这些术语没有定义,因此几乎不可能在这方面提供任何帮助。 5排列彼此较近的等级较高,随机日的等级较低。 6解决最佳时间表方案
  3. 输出一些东西。 给我一个最好的案例信息的详细列表。 8输出一个可能的类信息的详细列表(例如,有些可能是完整的)
  4. 优化一些东西,寻找“最好的”。另一个无法定义的术语。 让程序自动选择最好的类。 继续检查,看看我们是否能达到7。

顺便说一下,Python有"列表“。不管它们是否有“联系”,都没有真正涉及到其中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/419698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档