删除uc-merced课程表的模块

ucmscraper的Python项目详细描述


#ucmercedule:scraper
一个python模块,为您刮取[uc merced类调度][1]!

api
使用这个模块几乎只需要1。创建调度实例并
2。正在读取其数据属性;有关详细信息,请参阅下面的内容。


也就是说,它实际上只将数据构造成字段,并且仅提供很少的功能。组成schedule的term、course和section类遵循相同的思路。由客户机实现自己的函数
来处理这些类型。

`schedule`可以通过三种方法创建:两种方法涉及工厂类方法,而
one是一个简单的构造函数。

` ucmscraper.schedule.fetch_latest()`
执行一个http请求,如果成功,则返回一个
最新期限(编写时为2019年秋季)的调度对象。` ucmscraper.schedule.fetch(term)`
执行http请求,如果成功,则返回给定"term"对象的调度对象。`应通过"ucmscraper.get_term s()"检索术语。` schedule(schedule_html)`
分析schedule_html并返回schedule对象。


\schedule属性
schedule具有以下数据属性:

`schedule.html`-原始schedule页的原始html字符串

`schedule.term`-a`term`object包含与此"schedule"实例关联的术语
的信息。

`schedule.departments`-an[ordereddict][2],其键是部门代码,其值是关联的部门标题,例如:
```
{
`anth':'anthropology',
"best":"bio engine small scale tech"、
"bio":"bio sciences"、
"bio":"bio engineering"、

}
`````
键按照它们在计划页中的出现顺序(按字母顺序排列)排列。

"schedule.courses`-一组"course`[namedtuples](3)in
课程出现在日程安排页面上的顺序,例如
```

课程(
部门代码='anth',
编号='001',
标题='Social Cultural人类学',
单元=4


课程(
部门代码='wri',
number='131c',
title='本科研究期刊',
单元=2


````

`日程安排。节`-节`[命名双元组](3),每个节代表日程安排页上的一个非考试行,并按照章节在日程安排页上出现的顺序,例如:
```

章节(
crn=30250,
部门代码='anth',
课程编号='001',
编号='01',
标题='社会文化人类学',
备注=('还必须注册相应的讨论',),
活动='lect',
天='mw',
开始时间='1:30 pm',
结束时间='2:45 pm',
地点='acs 120',
讲师='delugan,robin',
最大座位数=210,
座位数=0,
免费座位数=210


部分(
crn=34978,
部门代码=wri,
课程编号=131c,
编号=01,
标题=本科研究期刊,
备注=),
活动='sem',
天='w',
开始时间='9:30 am',
结束时间='11:20 am',
地点='clssrm 272',
讲师='staff',
最多座位数=20,
占用座位数=0,
免费座位=20


````

ucmscrapper.get_terms()`
第一次调用时,执行http请求,如果成功,返回一个[orderEDDICT][2]当前可通过
[官方日程搜索表][1]查看的条款。键是"validterm"字符串,值是
"term"对象。关键字的顺序与"正式日程搜索"窗体中的顺序相同。


注意:不再在"正式日程搜索"窗体中的旧术语的访问权限受到限制,因此此模块无法检索它们。我可以维护旧条款中的日程页,如果您想访问它们,请与我联系。

"term"具有以下数据属性:

"term.code"--包含
[正式日程搜索表单][1]中"validterm"值的字符串。当您通过
"选择术语"单选按钮之一选择术语时,单击"查看类计划"时,您正在选择要提交的"validterm"。


`term.name`-包含与上述单选按钮之一相关联的术语名称的字符串。

用法
``python
import json
import pathlib
import ucmscraper

=获取最后一个值(ucmscraper.get_terms())
尝试:
使用open('example/{}.html'。格式(最新的_term.name),'r')作为f:
schedule_html=f.read()
schedule=ucmscraper.schedule(schedule_html,最新项)
除了filenotfounderror:
schedule=ucmscrapper.schedule.fetch\latest()


class namedtupleiterencoder(json.jsonencoder):
def default(self,o):
返回[t.{asdict()for t in o]


term=schedule.term.name
以open('example/{}.html'。format(term),'w')作为f:
f.write(schedule.html)
OrderedDicts不需要sort\key=true
以open('example/{}-departments.json'。format(term),'w')作为f:
json.dump(schedule.departments,f,indent=4)
使用open('example/{}-courses.json'。format(term),'w')作为f:
json.dump([t.{asdict()for t in schedule.courses],f,indent=4)
使用open('example/{}-sections.json'。format(term),'w')作为f:
json.dump([t.\u asdict(),用于schedule.sections中的t),f,indent=4)
````
查看[示例文件夹](example/)中生成的计划文件。

[1]:https://mystudentrecord.ucmerced.edu/pls/prod/xhwschedule.p嫒selectSubject
[2]:https://docs.python.org/3.5/library/collections.html嫒collections.ordereddict
[3]:https://docs.python.org/3.5/library/collections.html collections.namedtuple
[4]:https://en.wikipedia.org/wiki/record(计算机科学)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
字典java cassandra对象映射注释   java定制Solr TokenFilter lemmatizer   字符串从Java文件中读取windows文件名   java如何在Windows上设置StanfordCorenlp服务器以返回文本   java axis2“意外的子元素值”   java使用POI HSSF获取错误   多线程Java等待计时器线程完成   java ForkJoinPool BuffereImage处理风格   从java代码运行Python脚本   java将字节[]转换为短[],使每个短元素包含13位数据   java如何为swing jframe应用程序将代码划分为类   java使用okhttp更改baseurl   java AlertDialog。建设者setView导致堆栈溢出错误   java如何在特定的radius 安卓 studio中接收地址列表?