Python爬虫初探
2016-06-08 15:45
381 查看
闲来无事研究了一下python的爬虫技术,现在总结一下
首先电脑上要有python的环境,mac上应该自动安装有2.x版本的,可以从网上下载最新的3.5.1,运行使用python3而不是python.我这里新下了3导致pip命令失效,应该是路径有问题,用pip3命令可以.
testClass.py 文件
myTool.py 文件
参考:
http://www.cnblogs.com/fnng/p/3576154.html
http://cuiqingcai.com/990.html
代码地址
https://github.com/YoungFroever/qiushi
明天端午了,祝大家端午快乐(也就我自己了..).近半年没回过家今天晚上回去,想到回来之后跟高中上课般加班便头痛不已,还是先享受下三天的假期吧.
首先电脑上要有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
明天端午了,祝大家端午快乐(也就我自己了..).近半年没回过家今天晚上回去,想到回来之后跟高中上课般加班便头痛不已,还是先享受下三天的假期吧.
相关文章推荐
- python: indentationerror: unexpected indent
- 快速排序quick_sort(python的两种实现方式)
- 快速排序quick_sort(python的两种实现方式)
- python查找元素
- 利用selenium登陆智联招聘,获取cookie
- Python爬虫Scrapy测试
- Python多层嵌套list的递归处理方法(推荐)
- Python-Socket
- python随机生成字符
- Python-嵌套列表list的全面解析
- python装饰器
- python封装的一个ftp功能的代码
- PYTHON压平嵌套列表的简单实现
- Python学习笔记-旅行费用计算器
- faster-rcnn 之 基于roidb get_minibatch(数据准备操作)
- 用Python+Django在Eclipse环境下开发web网站
- Python - lambda 函数, 返回单个表达式的值
- 利用python库中的pdfminer解析paper pdf文档
- Python用Bottle轻量级框架进行Web开发
- numpy 之 np.where