Python小爬虫
2016-07-24 16:47
609 查看
自己琢磨写了一个Python的小爬虫,用来爬学校的招聘信息,以下是代码。
参考资料:[Python]网络爬虫(八):糗事百科的网络爬虫(v0.3)源码及解析(简化更新)
__author__ = 'WCQ' # -*- coding: utf-8 -*- import urllib2 import urllib import re import thread import time #----------- 加载招聘信息 ----------- class Spider_Model: def __init__(self): self.page = 1 self.enable = False self.endPage = 2 # 获取网址的HTML 并编码 def GetHTML(self, myUrl): user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = {'User-Agent': user_agent} req = urllib2.Request(myUrl, headers=headers) myResponse = urllib2.urlopen(req) myPage = myResponse.read() # encode的作用是将unicode编码转换成其他编码的字符串 # decode的作用是将其他编码的字符串转换成unicode编码 unicodePage = myPage.decode("GBK") return unicodePage # 将招聘信息抠出来,添加到列表中并且返回列表 def GetPage(self, page): myUrl = "http://www.job.ustc.edu.cn/list.php?trans=7&page=" + str(page) + "&MenuID=002002" unicodePage = self.GetHTML(myUrl) # 找出所有class="content"的div标记 # re.S是任意匹配模式,也就是.可以匹配换行符 jobList = re.findall('<div class="Joplistone">(.*?)</div>', unicodePage, re.S) jobItems = re.findall('<li><a href="(.*?)" style="color:#">(.*?)</a><span class="zhiwei">(.*?)</span><span class="zhuanye">(.*?)</span></li>', jobList[0], re.S) jobs = [] for job in jobItems: # job 中第一个元素是招聘链接 # job 中第二个元素是招聘公司 # job 中第三个元素是职位 # job 中第四个元素是发布日期 jobs.append([job[1], "http://www.job.ustc.edu.cn/" + job[0], job[2], job[3]]) return jobs # 获得招聘细节 def getJobDetail(self, joburl): jobHtml = self.GetHTML(joburl) jobDetail = re.findall('<div class="textone">(.*?)</div>', jobHtml, re.S) #print jobDetail return jobDetail # 获得完整的招聘信息 def getJobDetailList(self, jobs): jobDetailList = [] for job in jobs: jobDetailList.append([job[0], job[1], job[2], job[3], self.getJobDetail(job[1])]) return jobDetailList # 先展示一下 def showJob(self, page): jobs = self.GetPage(page) jobDetailList = self.getJobDetailList(jobs) for jobDetail in jobDetailList: for iterm in jobDetail: print iterm def Start(self): self.enable = True page = self.page while self.enable & (page < self.endPage): # 展示招聘信息 self.showJob(page) page += 1 print u'招聘内容:' myModel = Spider_Model() myModel.Start()
参考资料:[Python]网络爬虫(八):糗事百科的网络爬虫(v0.3)源码及解析(简化更新)
相关文章推荐
- 基于VS2015 X64的boost.python环境搭建
- Python数据预处理—训练集和测试集数据划分
- Python学习资料推荐
- Python 小甲鱼教程 课后练习44
- Python学习笔记——基本语法
- python 判断一个IP地址是否合法
- 简明python地址簿
- 【python】a[::-1]翻转
- 【转】Python浅拷贝与深拷贝
- ndcg算法的python实现
- python实现修改redmne版本号
- logging 模块记录日志
- Python核心编程学习笔记-2016-07-24-01-理解copy和deepcopy
- Python——使用ElementTree解析AndroidManifest.xml文件
- python-pandas绘图
- python遍历文件
- Python 之 datetime模块
- Python 之 time模块详解
- 【转】python操作mysql数据库
- python3.4 装 numpy