使用正则表达式提取网页中的表格信息
源文件在这
这是一个html 空教室信息表格,我想把里面的信息提取出来。
逐行的处理表格,比如返回 {教室101;有课,没课,有课,有课,。。。}(仅仅是演示,就是返回程序能识别的形式,而不是这种人能看懂的表格,我知道转换一下的)
最好是使用正则表达式直接处理(python语句的形式),或者是python的lxml库,因为在云服务器上,可能不好安装别的库。
十分感谢~~
如果有比正则表达式更好的办法,也可以的~~~谢谢了~~ 展开
由于不会弄程序只会正则表达式因此只能给你提供一下正则表达式了,不过你会程序,这个问题就会变得很简单了。我将所有的东西用正则表达式匹配出来,你输出之后用程序做个替换就可以实现你要的那种效果了。
正则:<tr style="display:" id="tr\d+"[^>]*?>\s*<td>([^<]*?)</td>[\s\S]+?<tr align="center" >[\s\S]+?<tr align="center" >\s*<td[^>]*?>(?:<a href="#" title="[^"]*?"><font color="#\w+">|)([\s\S]*?)(?:</font></a>|)</td>\s*<td[^>]*?>(?:<a href="#" title="[^"]*?"><font color="#\w+">|)([\s\S]*?)(?:</font></a>|)</td>\s*<td[^>]*?>(?:<a href="#" title="[^"]*?"><font color="#\w+">|)([\s\S]*?)(?:</font></a>|)</td>\s*<td[^>]*?>(?:<a href="#" title="[^"]*?"><font color="#\w+">|)([\s\S]*?)(?:</font></a>|)</td>\s*<td[^>]*?>(?:<a href="#" title="[^"]*?"><font color="#\w+">|)([\s\S]*?)(?:</font></a>|)</td>\s*<td[^>]*?>(?:<a href="#" title="[^"]*?"><font color="#\w+">|)([\s\S]*?)(?:</font></a>|)</td>\s*<td[^>]*?>(?:<a href="#" title="[^"]*?"><font color="#\w+">|)([\s\S]*?)(?:</font></a>|)</td>\s*<td[^>]*?>(?:<a href="#" title="[^"]*?"><font color="#\w+">|)([\s\S]*?)(?:</font></a>|)</td>\s*<td[^>]*?>(?:<a href="#" title="[^"]*?"><font color="#\w+">|)([\s\S]*?)(?:</font></a>|)</td>\s*<td[^>]*?>(?:<a href="#" title="[^"]*?"><font color="#\w+">|)([\s\S]*?)(?:</font></a>|)</td>
图片:
从图片里面不难看出,将所有的项都匹配出来了。之后你按照顺序输出捕获组1-11就是你要的那些结果,在输出的时候可以按照你需要的格式来进行输出。
输出完成之后做一个替换就可以了如果是 ;替换成没有课,如果是小黑点,替换成有课,就OK了。