date: 2017-03-14 21:08:42
Holi需要。
之前爬的课表,现在需要将那些个一连串的字符串分割成想要的单独的数据,做个性化推送。
程序的前面和之前一样,模拟登录。
在处理选课/改课这个网页的时候,还是蛮复杂的。
遇神杀神,见鬼杀鬼。
爬虫
def Store(self):
# 改课选课
grade_page = self.session.get(
"http://yjsxt.xidian.edu.cn/electiveForwardAction.do")
bsObj = BeautifulSoup(grade_page.text, "html.parser")
table = bsObj.findAll("table", {"class": "list_2title"})[0]
rows = table.findAll("tr")
# 删除特定的标签和其标签下的内容
# 方法:
# 去除标签:[s.extract() for s in soup('script')]
[s.extract() for s in bsObj.findAll(
'td', attrs={'class': "special_background textLeft"})]
csvFile = open('./xuankegaike.csv', 'w', newline='', encoding='utf-8')
writer = csv.writer(csvFile)
writer.writerow(('课程编号', '课程名称', '学分', '学位课', '上课学期',
'任课教师', '校区', '上课地点/星期/节次/周次', '分班号'))
csvRow = []
try:
for row in rows:
csvRow = []
# for cell in row.findAll('td')[:-1]:
for cell in row.findAll('td', attrs={'valign': "middle"})[:-1]:
csvRow.append(cell.get_text().strip().replace(' ', ''))
writer.writerow(csvRow)
finally:
csvFile.close()