利用Python正则匹配中文——爬取校园网公告栏中感兴趣的内容

  写这个程序是因为校园网公告栏时不时会有学术报告,讲座之类的信息发布,但这类信息往往发布在讲座的前一天,以至于丢失很多重要消息。同时公告栏里也会发布一些跟学生无关的内容,比如工会主席会议啥的。

  主要遇到的困难时对中文的正则匹配问题。(比如通过第一次正则可以提取到一个页面内的所有中文标题,第二次正则从这些中文标题中将能匹配上“报告”两个字的对象添加到结果list内)

  学校公告页面是gb2312编码。我使用的方式是,整个工程使用utf-8编码,将需要匹配的关键字转换成utf-8编码格式,使用正则匹配utf-8的编码即可,详细解释在代码中。

  本来打算把这个放到微信公众号服务器上每天推送来着,微信接入都写好了,一直接入不成功,最后才发现,原来服务器域名要正式备案之后才可以,奈何我已经把备案这茬儿给忘了。退而求其次,暂时用163的邮件短信提醒功能每天推送了。

  

# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup
import urllib
import Queue
import urllib2
import re
import os
import socket
import httplib
import threading

keyList = [u‘报告‘,u‘学术‘,u‘讲座‘,u‘讲堂‘,u‘就业‘,u‘项目‘,u‘招聘‘]
keyResult = []
url = ‘http://urp.tust.edu.cn/bulletinPageList.jsp?pageNum=1&groupIds=Nyw4‘
req = urllib2.Request(url)
res = urllib2.urlopen(req)
soup = BeautifulSoup(res.read())
lists = soup.select(‘.an-list‘)
strLists = str(lists) #此时列表里存储的是utf-8的编码 类似于 u1234\\u2312\\u8473  表示‘\’需要两个\\才可以 转义字符
title = re.findall(r‘title="(.*?)"‘,strLists) #匹配后也一样
date = re.findall(r‘<p>(.*?)<‘,strLists)
herf = re.findall(r‘href="(g.*?)"‘,strLists)for t in title:
    for key in keyList:
        tempkey = str(repr(key)) #正则经常用到的repr函数,要查看在Python内部到底是怎么表示的 类似于 u‘\u5c31\u4e1a‘
        tempkey = repr(tempkey)  #这一步把转义字符暴露出来,方便匹配  类似于  u‘\\u5c31\\u4e1a‘
        tempkey = tempkey[3:tempkey.__len__()-2] #这一步把前面的 u‘ 和后面的 ‘ 删掉
        if re.search(r‘‘+tempkey+‘‘,t):  #开始匹配
            keyResult.append(t)
            break
for key in keyResult:
    s = "u‘%s‘" %(key)
    s = eval(s)
    print s
时间: 2024-12-09 14:56:31

利用Python正则匹配中文——爬取校园网公告栏中感兴趣的内容的相关文章

Python 正则练习(一) 爬取国内代理ip

简单的正则表达式练习,爬取代理 ip. 仅爬取前三页,用正则匹配过滤出 ip 地址和 端口,分别作为key.value 存入 validip 字典. 如果要确定代理 ip 是否真的可用,还需要再对代理 ip 再进行筛查过滤,最终仅仅保存真实可用代理 ip. 可能需要修改的内容: xpath 替代正则进行抓取 ip 和端口: 验证代理 ip 是否可用: 再存入mogodb 数据库替代字典. import re import requests from collections import defa

教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

欢迎加入Python学习交流群:535993938  禁止闲聊 ! 名额有限 ! 非喜勿进 ! 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于

【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于它是一个框架,任何人都可

Python正则匹配字母大小写不敏感在读xml中的应用

需要解决的问题:要匹配字符串,字符串中字母的大小写不确定,如何匹配? 问题出现之前是使用字符串比较的方式,比如要匹配'abc',则用语句: 1 if s == 'abc':#s为需要匹配的字符串 2 print '匹配成功\n' 现在的问题是s可能是Abc.ABC等等,所以需要大小写不敏感的匹配,如果把需要匹配的模式的大小写进行罗列,那即使是三个字母的短模式也是很麻烦,查了一下,正则表达式re模块中有个参数flags=re.I,这样就可以大小写不敏感的匹配了,示例如下: 1 import re

Python编写网页爬虫爬取oj上的代码信息

OJ升级,代码可能会丢失. 所以要事先备份. 一开始傻傻的复制粘贴, 后来实在不能忍, 得益于大潇的启发和聪神的原始代码, 网页爬虫走起! 已经有段时间没看Python, 这次网页爬虫的原始代码是 python2.7版本, 试了一下修改到3.0版本, 要做很多包的更替,感觉比较烦,所以索性就在这个2.7版本上完善了. 首先观赏一下原始代码,我给加了一些注释: # -*- coding: cp936 -*- import urllib2 import urllib import re import

Python 爬虫入门之爬取妹子图

Python 爬虫入门之爬取妹子图 来源:李英杰  链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob/master/%E7%88%AC%E8%99%AB%E9%9B%86%E5%90%88/meizitu.py 爬虫成果 当你运行代码后,文件夹就会越来越多,如果爬完的话会有2

教你分分钟学会用python爬虫框架Scrapy爬取你想要的内容

教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 python爬虫学习课程,下载地址:https://pan.baidu.com/s/1v6ik6YKhmqrqTCICmuceug 课程代码原件:课程视频: 原文地址:http://blog.51cto.com/aino007/2123341

python爬虫-基础入门-爬取整个网站《3》

python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python2.x 使用类库: >> urllib 库 >> urllib2 库 python3.x 使用的类库: >> urllib 库 变化: -> 在python2.x中使用import urllib2 ----- 对应的,在python3.x 中会使用import url

python爬虫之小说爬取

废话不多说,直接进入正题. 今天我要爬取的网站是起点中文网,内容是一部小说. 首先是引入库 from urllib.request import urlopen from bs4 import BeautifulSoup 然后将网址赋值 html=urlopen("http://read.qidian.com/chapter/dVQvL2RfE4I1/hJBflakKUDMex0RJOkJclQ2.html") //小说的第一章的网址 bsObj=BeautifulSoup(html)