python简单爬虫代码,python入门

##python爬取慕课网首页课程标题与内容介绍
效果图:
这里写图片描述
思路:
获取页面内容存入html -->
利用正则表达式获取所有课程块的div盒子存入everydiv -->
在每个课程块中抓取标题与介绍存入列表classinfo -->
将列表存入info.txt文件中 -->
最后检查抓取到的内容

知识点:

  1. re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,适合文本解析、复杂字符串分析和信息提取时使用
  2. Requests ,基于 urllib,但比 urllib 更加方便。 自动的把返回信息有Unicode解码,且自动保存返回内容,所以你可以读取多次
  3. sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互

python源代码 即粘即用

#-*_coding:utf8-*-
import requests
import re
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

class func(object):
    def __init__(self):
        print u'开始爬取内容。。。'

#getsource获取网页源代码
    def getsource(self,url):
        html = requests.get(url)
        #print str(html.text)   可以在此打印,来检查是否抓到内容
        return html.text

#geteverydiv抓取每个课程块的信息
    def geteverydiv(self,source):
        everydiv = re.findall('(<div class="moco-course-wrap".*?</div>)',source,re.S)
        return everydiv

#getinfo从每个课程块中提取出课程标题和内容描述
    def getinfo(self,eachclass):
        info = {}
        info['title'] = re.search('<h3>(.*?)</h3>',eachclass,re.S).group(1)
        info['content'] = re.search('<p>(.*?)</p>',eachclass,re.S).group(1)
        #print info  可以在此打印,来检查是否抓到内容
        return info

#saveinfo用来保存结果到info.txt文件中
    def saveinfo(self,classinfo):
        f = open('info.txt','a')
        for each in classinfo:
            f.writelines('title:' + each['title'] + '\n')
            f.writelines('content:' + each['content'] + '\n\n')
        f.close()
        print "write file finished"
        
#主函数
if __name__ == '__main__':
    classinfo = []
    url = 'http://www.imooc.com/'
    testspider = func()
    print u'正在处理页面:' + url
    html = testspider.getsource(url)
    everydiv = testspider.geteverydiv(html)
    for each in everydiv:
        info = testspider.getinfo(each)
        classinfo.append(info)
    testspider.saveinfo(classinfo)

如果您有什么意见或建议,欢迎留言…….
在这里插入图片描述

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值