Python爬虫初探

闲来无事研究了一下python的爬虫技术,现在总结一下

首先电脑上要有python的环境,mac上应该自动安装有2.x版本的,可以从网上下载最新的3.5.1,运行使用python3而不是python.我这里新下了3导致pip命令失效,应该是路径有问题,用pip3命令可以.

testClass.py 文件


#加上这个可以输入中文
# -*- coding:utf-8 -*-
#导入几个内置库
import urllib;
import urllib2;
import re;
import myTool;
#模拟浏览器和请求头,否则显示访问出错
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)';
headers = {'User-Agent':user_agent};

#对于class的使用还不了解
class Spider:

    def __init__(self):
    	  #默认网址
        self.url = "";
        #lowB English
        self.tool = myTool.myZhengze();
        
    def getHtml(self,url):
        request = urllib2.Request(url,headers=headers);
        response = urllib2.urlopen(request);
        #此处更改网站编码方式,有的是GBK的,可以查看网页源代码的meta charset属性
        return response.read().decode('utf-8');    
    #得到网址取出文字并写入文件
    def getInfo(self,html):
    	#初步取出       
        #正则表达式解释: *匹配1个除\n外的字符,*匹配前一个字符0次货无数次,?匹配前一个字符0次或一次,也就是结束匹配
        iden = '<div class="content">.*?</div>';
        temp = re.compile(iden,re.S);
        result = re.findall(temp,html);
        for item in result:
            middle = self.tool.myReplace(item);
            hahah = self.tool.writeToFile('端午节快乐.txt',middle);
            print middle;
        return result;
    #得到网址取出网站并下载图片   
    def getPic(self,html):
        idenPic = '<img src=.*?.jpg';
        tempPic = re.compile(idenPic,re.S);
        result = re.findall(tempPic,html);
        x = 0;
        for item in result:
            removeSome = re.compile('<img src="|"');
            middle = re.sub(removeSome,'',item);
            middle.strip();
            #urllib.urlretrieve()方法,直接将远程数据下载到本地。
            urllib.urlretrieve(middle,'%s.jpg' % x);
            x+=1;
            print middle;
        return result;
          
spider = Spider();
a = spider.getHtml('http://www.qiushibaike.com/hot/1');
#print a;
b = spider.getInfo(a);
c = spider.getPic(a);
#print b;


myTool.py 文件

# -*- coding:utf-8 -*-
import re;
import sys;
reload(sys);
sys.setdefaultencoding('utf-8');
class myZhengze:
    removeQiuBai = re.compile('<div class="content">');
    removeDiv = re.compile('<div>|</div>')
    removeBr = re.compile('<br/>');
    #removeDiv = re.compile('<P>|<span class="copyright">|<P>')
    def __init__(self):
        return None;
    
    def myReplace(self,x):
        x = re.sub(self.removeQiuBai,"",x);
        x = re.sub(self.removeDiv,"",x);
        x = re.sub(self.removeBr,'',x);
        return x.strip();
    def writeToFile(self,filename,txt):
    	  # 'w'是覆盖模式 'a'是追加格式
        f = open(filename,'a');
        f.write(txt);
        f.write('\n')
        f.close();

参考:

 http://www.cnblogs.com/fnng/p/3576154.html

http://cuiqingcai.com/990.html

代码地址

https://github.com/YoungFroever/qiushi

明天端午了,祝大家端午快乐(也就我自己了..).近半年没回过家今天晚上回去,想到回来之后跟高中上课般加班便头痛不已,还是先享受下三天的假期吧.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值