Python 2.7.11
文章结构
1.流程分析
2.spider爬虫类
3.主函数
4.成果展示
流程分析
spider爬虫类
# #-*—coding:utf8-*-
import requests
import re
#下面三行是将windows控制台的编码形式转换成utf-8编码
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
# 创建spider爬虫类
class spider(object):
def __init__(self):
print u'开始了'
# 获取每个网页的源代码
def getSource(self,url):
html = requests.get(url)
# 将获得的源代码以utf-8的格式解析
html.encoding='utf-8'
return html.text
# 得到连续的多个课程网页
def getPages(self,url,total):
urls=[]
init_page = int(re.search('page=(\d+)',url,re.S).group(1))
for i in range(init_page,total+1):
# 将页数通过正则表达式来替换
link=re.sub('page=\d+','page=%d'%i,url)
urls.append(link)
return urls
# 得到每个课程页中的多个课程
def getCourses(self,html):
Courses=re.findall(r'<li class="course-one">(.*?)</li>',
html,re.S)
return Courses
# 利用正则表达式筛选课程信息
def getCourseInfo(self,Course):
info={}
# r"pattern" 匹配模式的前面加上r,就不必在转义里面的字符
info['title']=re.search(r'<span>(.*?)</span>',
Course,re.S).group(1)
info['decoration']=
re.search(r'class="text-ellipsis">(.*?)</p>',
Course,re.S).group(1)
# 去除字符串两边和中间的空白字符
peoples=re.search('<span class="l ml20">
(.*?)</span>',Course,re.S).group(1).strip()
info['peoples']=re.sub('\s+',',',peoples)
return info
# 存储课程信息
def saveAllInfo(self,allInfo):
f=open("info.txt",'a')
for each in allInfo:
f.writelines('title:'+each['title']+'\n')
f.writelines('decoration:' + each['decoration'] + '\n')
f.writelines('peoples:' + each['peoples'] + '\n\n')
f.close()
有些表达式,因为排版只能断开了
主函数
if __name__=='__main__':
allInfo=[]
spider=spider()
url = 'http://idcbgp.cn/course/list?page=1'
urls = spider.getPages(url,10)
for each in urls:
print u'正在处理%s'%each + '\n'
content = spider.getSource(each)
Courses = spider.getCourses(content)
for Course in Courses:
info = spider.getCourseInfo(Course)
allInfo.append(info)
spider.saveAllInfo(allInfo)
效果展示
點(diǎn)擊查看更多內(nèi)容
37人點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得
100積分直接送
付費(fèi)專(zhuān)欄免費(fèi)學(xué)
大額優(yōu)惠券免費(fèi)領(lǐng)